苹果官方发出消息,2017年1月1号以后,必须全部使用https协议,至此友盟分享最新版已经可以支持https了,废话不多说,直接上过程
一. U-Share SDK集成
1.友盟官方文档里下载SDK ( UMSocial ),将整个UMSocial文件拖入工程中。[UMSocial有三个文件,见下图]
2. 添加项目配置
3.关闭 Bitcode 设置为NO
4.加入依赖系统库
平台依赖系统库
微信SystemConfiguration.framework
CoreTelephony.framework
libsqlite3.tbd
libc++.tbd
libz.tbd
QQSystemConfiguration.framework
libc++.tbd
新浪微博SystemConfiguration.framework
CoreTelephony.framework
ImageIO.framework
libsqlite3.tbd
libz.tbd
TwitterCoreData.framework
注:Twitter平台加入后需添加TwitterKit.framework/Resources/TwitterKitResources.bundle。
U-Share SDK平台配置
二. U-Share SDK平台配置
添加URL Types ( 个人爱好通过工程设置面板添加 )
三.调用U-Share SDK
1.AppDelegate.m中设置如下代码 (个人觉得添加这几个QQ,微信,微博平台就可以,不能满足你的要求,可以在官网文档上自行添加,再移除其他的平台)
//打开日志
[[UMSocialManagerdefaultManager]openLog:YES];
//设置友盟appkey
[[UMSocialManagerdefaultManager]setUmSocialAppkey:@"57b432afe0f55a9832001a0a"];
//获取友盟social版本号
NSLog(@"友盟版本: %@", [UMSocialGlobalumSocialSDKVersion]);
//各平台的详细配置
//设置微信的appId和appKey
[[UMSocialManagerdefaultManager]setPlaform:UMSocialPlatformType_WechatSessionappKey:@"wxdc1e388c3822c80b"appSecret:@"3baf1193c85774b3fd9d18447d76cab0"redirectURL:@"http://mobile.umeng.com/social"];
//设置分享到QQ互联的appId和appKey
[[UMSocialManagerdefaultManager]setPlaform:UMSocialPlatformType_QQappKey:@"100424468"appSecret:nilredirectURL:@"http://mobile.umeng.com/social"];
//设置新浪的appId和appKey
[[UMSocialManagerdefaultManager]setPlaform:UMSocialPlatformType_SinaappKey:@"3921700954"appSecret:@"04b48b094faeb16683c32669824ebdad"redirectURL:@"http://sns.whalecloud.com/sina2/callback"];
//如果不想显示平台下的某些类型,可用以下接口设置
[[UMSocialManagerdefaultManager]removePlatformProviderWithPlatformTypes:@[@(UMSocialPlatformType_Flickr),@(UMSocialPlatformType_Linkedin),@(UMSocialPlatformType_Pinterest),@(UMSocialPlatformType_KakaoTalk),@(UMSocialPlatformType_Twitter),@(UMSocialPlatformType_Facebook),@(UMSocialPlatformType_Email)]];
2.系统回调
#warning注意如果同时使用微信支付、支付宝等其他需要改写回调代理的SDK,请在if分支下做区分,否则会影响分享、登录的回调
- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation{
BOOLresult = [[UMSocialManagerdefaultManager]handleOpenURL:url];
if(!result) {}
returnresult;}
- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url{
BOOLresult = [[UMSocialManagerdefaultManager]handleOpenURL:url];
if(!result) { }
returnresult; }
3.点击弹出分享面板 (举例:分享网页,其他平台查看官方Demo)
#import"UMSocialUIManager.h"
//点击分享按钮
- (IBAction)share:(id)sender {
__weaktypeof(self) weakSelf =self;
//显示分享面板
[UMSocialUIManager showShareMenuViewInView:nilsharePlatformSelectionBlock:^(UMSocialShareSelectionView *shareSelectionView,NSIndexPath*indexPath, UMSocialPlatformType platformType) {
// 根据platformType调用相关平台进行分享
[weakSelf shareWebPageToPlatformType:platformType]; // 分享网页
}];
}
//网页分享
- (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType
{
//创建分享消息对象
UMSocialMessageObject*messageObject = [UMSocialMessageObjectmessageObject];
//创建网页内容对象
//UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:@"分享标题" descr:@"分享内容描述" thumImage:[UIImage imageNamed:@"icon"]];
NSString* thumbURL =@"http://weixintest.ihk.cn/ihkwx_upload/heji/material/img/20160414/1460616012469.jpg";
UMShareWebpageObject*shareObject = [UMShareWebpageObjectshareObjectWithTitle:@"分享标题"descr:@"分享内容描述"thumImage:thumbURL];
//设置网页地址
shareObject.webpageUrl=@"http://mobile.umeng.com/social";
//分享消息对象设置分享内容对象
messageObject.shareObject= shareObject;
//调用分享接口
[[UMSocialManagerdefaultManager]shareToPlatform:platformTypemessageObject:messageObjectcurrentViewController:selfcompletion:^(iddata,NSError*error) {
if(error) {
UMSocialLogInfo(@"************Share fail with error %@*********",error);
}else{
if([dataisKindOfClass:[UMSocialShareResponseclass]]) {
UMSocialShareResponse*resp = data;
//分享结果消息
UMSocialLogInfo(@"response message is %@",resp.message);
//第三方原始返回的数据
UMSocialLogInfo(@"response originalResponse data is %@",resp.originalResponse);
}else{
UMSocialLogInfo(@"response data is %@",data);
}} // [selfalertWithError:error]; }];
}
四.适配ios10/9
1.https传输安全 在info.plist中加入安全域名白名单 (个人觉得最好在demo里直接拖这个文件)
2.应用跳转(SSO等)(个人觉得最好在demo里直接拖这个文件)
最新的友盟分享界面
详细请看友盟官方文档:http://dev.umeng.com/social/ios/quick-integration
补充:
错误:QQAPI- QQApi.m:252 param error: url is nil
因为有些字符识别有问题,所以网页地址需要转换
//设置网页地址
NSString *str_share_url = @"https://itunes.apple.com/cn/app/芒果盒子/id1208408572?mt=8";
NSString *new_url = [str_share_url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
shareObject.webpageUrl = new_url;