iOS友盟第三方登录及分享

第一步: 需要引入以下框架

// 需要引入框架:
1. SystemConfiguration.framework
2. CoreGraphics.framework
3. libsqlite3.dylib
4. CoreTelephony.framework
5. libstdc++.dylib,
6. libz.dyli

第二步: 下载最新的SDK
下载SDK链接,http://dev.umeng.com/social/ios/sdk-download

// 将UMSocial_Sdk-x.x.x的文件夹拖入工程目录下
确认勾选了“Copy items to destination's group folder”选项,并选择你要添加到的Target

// libUMSocial_Sdk-x.x.x.a  libUMSocial_Sdk_comment_3.0.a   库文件

// Header  头文字

// SocialSDKXib     xib文件

// en.Iproj, zh-Hans.Iproj  英文和中文语言文件

// frameworks   使用的第三方SDK,里面的Wechat,TencentOperAPI,TencentWeiboSSO,分别代表微信、手机QQ和腾讯微博SDK
978D1A62-DBE6-4937-818F-3DB2C7E39B15.png

注意:由于苹果要求在6月之前全部应用兼容IPv6,需要大家更新SDK至5.2.1版本,避免提交APPstore审核被拒!!!

第三步: 适配iOS9系统
由于iOS 9之后苹果加强了安全策略,如果使用 XCode7集成和开发使用友盟 SDK,对于适配 iOS 9需要配置:

  • A、在info.plist中加入安全域名白名单(右键info.plist用source code打开)
    根据自己需要分享的平台添加你所需要的,具体参考友盟官方文档链接:http://dev.umeng.com/social/ios/ios9,太长这里就不放截图了
  • B、在info.plist的NSAppTransportSecurity下新增NSAllowsArbitraryLoads并设置为YES,指定所有HTTP连接都可正常请求


    8C347FCC-EA7C-42B8-9A23-0F803FFB5C20.png

第四步: 配置URL scheme
http://dev.umeng.com/social/ios/quick-integration#1_4
在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes。如果使用的是Xcode3或更低版本,则需要在plist文件中添加。获取各个平台appkey或者appid的方法可以参考分享详细文档绑定各个平台部分,各个平台的url scheme格式如下表:

95185E55-3E18-4CAA-BB87-89E72DD61791.png
CF430AFE-E46A-453C-AFB8-FB253FB68299.png

第五步:其他注意事项

  • 1.新浪微博分享时,在other linker flags增加-ObjC 选项,并添加ImageIO 系统framework
  • 2.QQ空间分享时必须有图片,否则分享失败

第六步:具体实现如下:
1.在AppDelegate里使用友盟:


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // 使用友盟
    [self useUMengSocialData];
    
    return YES;
}

- (void)useUMengSocialData {
    
    // 设置友盟AppKey
    [UMSocialData setAppKey:UMengAppKey];
    
    
    //第一个参数为新浪appkey,第二个参数为新浪secret,第三个参数是新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致。
    [UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:WBShareAppKey
                                              secret:WBShareAppSecret
                                         RedirectURL:@"http://sns.whalecloud.com"];
    
    //设置微信AppId,设置分享url,默认使用友盟的网址
    [UMSocialWechatHandler setWXAppId:WXAppID appSecret:WXShareAppSecret url:@"http://www.baidu.com"];
    
    //设置分享到QQ空间的应用Id,和分享url链接
    [UMSocialQQHandler setQQWithAppId:QQShareAppID appKey:QQShareAppKey url:@"http://www.baidu.com"];

}

/**
 这里处理新浪微博SSO授权进入新浪微博客户端后进入后台,再返回原来应用
 */
- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [UMSocialSnsService  applicationDidBecomeActive];
}

2.具体调用控制器里调取第三方分享:

5E6DE6B5-C27B-4892-B92C-B0E21FD40D7C.png
#import "UMSocial.h"

#pragma mark - UMSocialUIDelegate

- (void)shareBtnClick {
    
    //分享内嵌文字
    NSString *shareText = @"测试分享文字";
    //分享内嵌图片
    UIImage *shareImage = [UIImage imageNamed:@"icon"];
    // 分享组顺序 按照需求自己相对应修改
    NSArray *arr =  [NSArray arrayWithObjects:UMShareToSina, UMShareToQQ, UMShareToQzone, UMShareToWechatSession, UMShareToWechatTimeline, nil];
    
    // 自定义title
    [UMSocialData defaultData].extConfig.qqData.title = @"测试";
    [UMSocialData defaultData].extConfig.qzoneData.title = @"测试";
    [UMSocialData defaultData].extConfig.wechatSessionData.title = @"测试";
    [UMSocialData defaultData].extConfig.wechatTimelineData.title = @"测试";
    
    // 设置点击分享内容跳转链接
    //    [UMSocialData defaultData].extConfig.qqData.url = @"http://baidu.com";
    
    //调用快速分享接口
    [UMSocialSnsService presentSnsIconSheetView:self
                                         appKey:UMengAppKey
                                      shareText:shareText
                                     shareImage:shareImage
                                shareToSnsNames:arr
                                       delegate:self];
    
    // 测试SDK在控制台的输出后能看到相应的错误码。
    [UMSocialData openLog:YES];
    
}

-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response
{
    //根据`responseCode`得到发送结果,如果分享成功
    if(response.responseCode == UMSResponseCodeSuccess)
    {
        //得到分享到的微博平台名
        NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);
    }
}

3.在具体控制器里调取第三方登录

#pragma mark - 第三方登录 1.在第三方平台完成授权 2.获取第三方平台的accesstoken信息及用户资料

- (void)qqLoginClick {
    
    UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToQQ];
    
    snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){
        
        // 获取微博用户名、uid、token等
        
        if (response.responseCode == UMSResponseCodeSuccess) {
            
            UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToQQ];
            
            NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);
            
        }});
}

- (void)wechatLoginClick {
    
    UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToWechatSession];
    
    snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){
        
        if (response.responseCode == UMSResponseCodeSuccess) {
            
            UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary]valueForKey:UMShareToWechatSession];
            
            NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);
            
        }
        
    });
}

- (void)weiboLoginClick {
    
    UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina];
    
    snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){
        
        // 获取微博用户名、uid、token等
        
        if (response.responseCode == UMSResponseCodeSuccess) {
            
            UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToSina];
            
            NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);
            
    }});
}

最近针对 iOS10兼容写的 iOS10之友盟分享6.0.3, 目前已更新至6.8.0版本, 有需要请移步: 友盟分享6.8.0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容