Demo:(XSLC项目,未上线)
要使用友盟,现在友盟网站中添加新的应用,获得此应用的唯一Appkey
官方文档:http://dev.umeng.com/social/ios/quick-integration#1_2
1.Cocoapods集成SDK
将需要的写入Podfile文件,然后在终端中执行"pod install"
但是执行完终端出现提示
[!] Your Podfile has had smart quotes sanitised. To avoid issues in the future, you should not use T
是因为Podfile 的内容语法格式有问题,原来我是复制粘贴的,现在自己敲一遍就行
添加完后发现,虽然导入了8个依赖库,但只会安装一个库,剩下7个含在里面
注意:
iOS使用cocoaPods集成友盟分享后,没有做其他任何操作,模拟器运行无问题,但是一真机运行就报错,Xcode版本是Version 8.3.2 (8E2002)
尝试过的解决方案
1.将Build settings->Linking->Other Linker Flags属性修改为-all_load 或者 -ObjC 无效
2.将Bitcode改为NO,改完也是无效,需要重启Xcode即可解决问题
2.第三方平台配置
1.配置SSO白名单,其中我添加了微信,QQ,支付宝
如果你的应用使用了如SSO授权登录或跳转到第三方分享功能,在iOS9/10下就需要增加一个可跳转的白名单,否则将在SDK判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败。
添加方法如下
在Info里面添加LSApplicationQueriesSchemes
2.配置URL Scheme
URL Scheme是通过系统找到并跳转对应app的一类设置
通过向项目中的info.plist文件中加入URL types可使用第三方平台所注册的appkey信息向系统注册你的app,当跳转到第三方应用授权或分享后,可直接跳转回你的app。
3.初始化U-Share及第三方平台后,进行分享
首先去友盟添加你的应用,获得Appkey
下面是代码部分
- 1.在AppDelegate中初始化友盟及第三方平台
#import <UMSocialCore/UMSocialCore.h>
其中
- 2.在点击页面某一按钮的时候,设置分享面板的显示顺序并弹出分享面板,不设置顺序的话会有自己的默认顺序,设置后会按照你设置的顺序来
- 3.分享
在上面的2中的回调中进行分享,可以像2一样分平台去分享不同的内容,也可以全部进行一样的内容分享,但因为我只添加了微信,所以就算控制面板上显示了其他第三方,也只有微信和短信可以直接分享
#import <UShareUI/UShareUI.h>
- (void)shareToWeiXin:(UMSocialPlatformType) platformType
{
//网页分享
//创建分享消息对象
UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
//创建网页内容对象(带了图片)
UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:@"大倩倩的分享" descr:@"关于明天四点下班的通知" thumImage:[UIImage imageNamed:@"WebOfBanner_InvitationCode"]];
//设置你要分享出去的网页地址
shareObject.webpageUrl = @"http://www.baidu.com";
//分享消息对象设置分享内容对象
messageObject.shareObject = shareObject;
//调用分享接口
[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error)
{
if (error)
{
UMSocialLogInfo(@"************Share fail with error %@*********",error);
}
else
{
if ([data isKindOfClass:[UMSocialShareResponse class]])
{
UMSocialShareResponse *resp = data;
//分享结果消息
UMSocialLogInfo(@"response message is %@",resp.message);
//第三方原始返回的数据
UMSocialLogInfo(@"response originalResponse data is %@",resp.originalResponse);
}
else
{
UMSocialLogInfo(@"response data is %@",data);
}
}
}];
}