搭友盟之便,创SocialShare

前言

    目前,常用的第三方分享途径有QQ、微信、微博、人人等...凑巧最近和盆友一起学习做项目,而项目需要通过第三方分享到第三方社交平台,如QQ、微博、微信等。通过查阅相关资料发现,现在各平台都有自己的官方第三方分享组件可用,官方文档也比较丰富,使用起来也比较方便。
    所以自己也就依葫芦画瓢,写个小Demo。

【友盟+】 社会化iOS组件—分享集成链接

1. 创建项目,然后填写应用基本信息,获取相关平台AppKey等信息

  • 友盟链接 | 微博开放平台 | 微信开放平台 | 腾讯开放平台

搭友盟之便,创SocialShare_第1张图片

搭友盟之便,创SocialShare_第2张图片

搭友盟之便,创SocialShare_第3张图片

2. 通过使用 Cocoapods 安装 SDK

pod 'UMengSocialCOM', '~> 5.2.1'

搭友盟之便,创SocialShare_第4张图片

3. 添加系统需要的 framework 框架

  • Security.framework
  • libiconv.dylib
  • SystemConfiguration.framework
  • CoreGraphics.Framework
  • libsqlite3.dylib
  • CoreTelephony.framework
  • libstdc++.dylib

4. 在 APPdelegate.m 文件中增加配置【友盟+】、需要的第三方平台APPID、Secret及Scheme URL

  • _ 在 APPdelegate.m 文件中增加配置【友盟+】、需要的第三方平台APPID、Secret_

  • 获取之前申请的相关Appkey及Secret

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //设置社会化组件appkey
    [UMSocialData setAppKey:@"你申请的友盟AppKey"];

    //设置微信AppId、appSecret,分享url
    [UMSocialWechatHandler setWXAppId:@"你申请的微信AppId" appSecret:@"你申请的微信AppSecret" url:nil];

    //设置手机QQ 的AppId,Appkey,和分享URL
        [UMSocialQQHandler setQQWithAppId:@"你申请的QQ_AppId" appKey:@"你申请的QQ_AppSecret" url:nil];

    //打开新浪微博的SSO开关,设置新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致。
    [UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"你申请的新浪微博AppKey"
                                              secret:@"你申请的新浪微博Secret"
                                         RedirectURL:@"你在微博开放平台设置的新浪微博回调地址"];

    return YES;
}

/**< 配置系统回调 */

- (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;
}
  • _ 配置Scheme URL_

  • 工程设置项 targets 栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes

平台 URL scheme 的设置格式
新浪微博 “wb”+新浪appkey,例如“wb126663232”
微信 微信应用appId,例如“wxd9a39c7122aa6516”
QQ\QQ空间 ① “QQ”+腾讯QQ互联应用appId转换成十六进制(不足8位前面补0),例如“QQ05FC5B14”(推荐) ② “tencent“+腾讯QQ互联应用Id,例如“tencent100424468”

5.以上配置完成后,在 ViewController.m文件的TouchesBegan方法中实现以下代码,然后 Command+R 编译

  • 注意导入 #import “UMSocial.h” 和遵守< UMSocialUIDelegate >协议
  //如果需要分享回调,请将delegate对象设置self,并实现下面的回调方法
    [UMSocialData defaultData].extConfig.title = @"分享的title";
    [UMSocialData defaultData].extConfig.qqData.url = @"http://baidu.com";
    [UMSocialSnsService presentSnsIconSheetView:self
                                         appKey:@"你申请的友盟AppKey"
                                      shareText:@"友盟社会化分享让您快速实现分享等社会化功能,http://umeng.com/social"
                                     shareImage:[UIImage imageNamed:@"icon"]
                                shareToSnsNames:@[UMShareToWechatSession,UMShareToWechatTimeline,UMShareToSina,UMShareToQQ,UMShareToQzone]
                                       delegate:self];

搭友盟之便,创SocialShare_第5张图片

编译成功后,在Touch方法中就阔以看到弹出的第三方控件

但是,此时的控制台打印了很多类似 canOpenUR 的提示信息(如下图)

刚开始看到这问题的时候无从下手,又去查阅相关资料发现——在iOS9以后openURL多了一个确认动作,如果使用 -canOpenURL: 方法,那么该方法所涉及到的 URL scheme 必须在”Info.plist”中将它们列为白名单(白名单上限50),否则不能使用。所以我们还需要在Plist文件中添加名为 LSApplicationQueriesSchemes 键值内容

_ 当添加plist文件完毕再运行时,若发现控制台还有类似于以下警告

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -980)

_ 则还需要在Plist文件中添加名为 App Transport Security Settings 键值内容_
搭友盟之便,创SocialShare_第6张图片

按照以上流程设计,那么第三方分享基本就没什么问题了。

你可能感兴趣的:(ios,qq,友盟)