iOS友盟第三方登陆开发

来源:互联网 发布:日本药妆品牌 知乎 编辑:程序博客网 时间:2024/05/26 09:56

一、申请应用信息

1、申请开发者账号

2、申请应用的appid等信息

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

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


二、下载友盟开发包

1、下载地址

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

3、添加依赖库

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

三、配置工程

1、配置URL Schemes


四、添加代码

1、AppDelegate中添加:

[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation  
  2. {  
  3.     BOOL result = [UMSocialSnsService handleOpenURL:url];  
  4.     if (result == FALSE) {  
  5.         //调用其他SDK,例如支付宝SDK等  
  6.     }  
  7.     return result;  
  8. }  
  9.   
  10. -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url  
  11. {  
  12.     BOOL result = [UMSocialSnsService handleOpenURL:url];  
  13.     if (result == FALSE) {  
  14.     }  
  15.     return result;  
  16. }  

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

2、代码

.h文件

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

[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. typedef enum  
  2. {  
  3.     LoginTypeNone = 0,//尚未登陆  
  4.     LoginTypeQQ = 1,//QQ登陆  
  5.     LoginTypeWeiXin = 2,//微信登陆  
  6.     LoginTypeWeiBo = 3,//微博登陆  
  7. }LoginType;  
声明block 用于返回登陆成功/失败信息

[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. typedef void(^UMBlock)(BOOL success);  
添加登陆方法

[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. -(void)SocialSnsLoginWithType:(LoginType)type block:(UMBlock)block;  

.m文件

添加头文件:

[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #import "UMSocial.h"  
  2. #import "UMSocialWechatHandler.h"  
  3. #import "UMSocialQQHandler.h"  
  4. #import "UMSocialSinaSSOHandler.h"  


登陆方法:

[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. -(void)SocialSnsLoginWithType:(LoginType)type block:(UMBlock)block  
  2. {  
  3.     NSString *platformName = [self getPlatformNameWithType:type];  
  4.     UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:platformName];  
  5.     snsPlatform.loginClickHandler((UIViewController*)self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){  
  6.         if (response.responseCode == UMSResponseCodeSuccess) {  
  7.             UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:snsPlatform.platformName];  
  8.             /** 
  9.              第三方的路成功后的信息都保存在snsAccount中 
  10.              */  
  11.             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);  
  12.             block(true);  
  13.         }else{  
  14.             block(false);  
  15.         }  
  16.     });  
  17. }  

辅助方法:

[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. -(NSString*)getPlatformNameWithType:(LoginType)type  
  2. {  
  3.     NSString *name = @"";  
  4.     switch (type) {  
  5.         case LoginTypeWeiBo:  
  6.             name = UMShareToSina;  
  7.             break;  
  8.         case LoginTypeWeiXin:  
  9.             name = UMShareToWechatSession;  
  10.             break;  
  11.         case LoginTypeQQ:  
  12.             name = UMShareToQQ;  
  13.             break;  
  14.         default:  
  15.             break;  
  16.     }  
  17.     return name;  
  18. }  
0 0
原创粉丝点击