前言
目前,常用的第三方分享途径有QQ、微信、微博、人人等...凑巧最近和盆友一起学习做项目,而项目需要通过第三方分享到第三方社交平台,如QQ、微博、微信等。通过查阅相关资料发现,现在各平台都有自己的官方第三方分享组件可用,官方文档也比较丰富,使用起来也比较方便。
所以自己也就依葫芦画瓢,写个小Demo。
【友盟+】 社会化iOS组件—分享集成链接
1. 创建项目,然后填写应用基本信息,获取相关平台AppKey等信息
2. 通过使用 Cocoapods 安装 SDK
pod 'UMengSocialCOM', '~> 5.2.1'
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];
编译成功后,在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 键值内容_