iOS友盟第三方登陆开发

来源:互联网 发布:泰达网络登录 编辑:程序博客网 时间:2024/05/25 18:12

一、申请应用信息

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;}

0 0