iOS友盟第三方登陆开发

一、申请应用信息

1、申请开发者账号

2、申请应用的appid等信息

腾讯开放平台WeiXin开放平台新浪微博开放平台

*申请分享应用的前提是需要应用已经上线,申请时需要提供商城地址。


二、下载友盟开发包

1、下载地址

2、下载完成后直接拖拽到项目目录里即可,Xcode 会自动区分 Header Search Paths、Framework Search Paths 、Library Search Paths

3、添加依赖库

具体操作请参考 友盟开发文档

三、配置工程

1、配置URL Schemes


四、添加代码

1、AppDelegate中添加:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    BOOL result = [UMSocialSnsService handleOpenURL:url];
    if (result == FALSE) {
        //调用其他SDK,例如支付宝SDK等
    }
    return result;
}

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    BOOL result = [UMSocialSnsService handleOpenURL:url];
    if (result == FALSE) {
    }
    return result;
}

1、创建工具类:UMControl.h 负责友盟的信息初始化、分享、第三方登陆。

2、代码

.h文件

文件添加枚举类型便于区分登陆,以及保存当前登陆状态,便于重新登陆

typedef enum
{
    LoginTypeNone = 0,//尚未登陆
    LoginTypeQQ = 1,//QQ登陆
    LoginTypeWeiXin = 2,//微信登陆
    LoginTypeWeiBo = 3,//微博登陆
}LoginType;
声明block 用于返回登陆成功/失败信息

typedef void(^UMBlock)(BOOL success);
添加登陆方法

-(void)SocialSnsLoginWithType:(LoginType)type block:(UMBlock)block;

.m文件

添加头文件:

#import "UMSocial.h"
#import "UMSocialWechatHandler.h"
#import "UMSocialQQHandler.h"
#import "UMSocialSinaSSOHandler.h"


登陆方法

-(void)SocialSnsLoginWithType:(LoginType)type block:(UMBlock)block
{
    NSString *platformName = [self getPlatformNameWithType:type];
    UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:platformName];
    snsPlatform.loginClickHandler((UIViewController*)self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){
        if (response.responseCode == UMSResponseCodeSuccess) {
            UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:snsPlatform.platformName];
            /**
             第三方的路成功后的信息都保存在snsAccount中
             */
            NSLog(@"\nusername = %@,\n usid = %@,\n token = %@ iconUrl = %@,\n unionId = %@,\n thirdPlatformUserProfile = %@,\n thirdPlatformResponse = %@ \n, message = %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL, snsAccount.unionId, response.thirdPlatformUserProfile, response.thirdPlatformResponse, response.message);
            block(true);
        }else{
            block(false);
        }
    });
}

辅助方法:

-(NSString*)getPlatformNameWithType:(LoginType)type
{
    NSString *name = @"";
    switch (type) {
        case LoginTypeWeiBo:
            name = UMShareToSina;
            break;
        case LoginTypeWeiXin:
            name = UMShareToWechatSession;
            break;
        case LoginTypeQQ:
            name = UMShareToQQ;
            break;
        default:
            break;
    }
    return name;
}

发布了93 篇原创文章 · 获赞 21 · 访问量 25万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览