前言
最近更新了友盟share SDK后发现分享到微博、微信、QQ全部不能用了,通过各种查阅资料、查看SDK说明,最终一个个填坑了,在这里记录一下填坑过程!
填坑
微博
之前分享到微博用的是UMShareWebpageObject
这个类,但是升级到6.9.8之后,用这个就不起作用了,一直提示网络连接失败,百度半天也没找到啥原因,最后通过观察其他APP分享到微博,发现分享后下面都有一张图片,于是就想到是不是分享的图片,所以就把分享类改成了UMShareImageObject
,真的成功了。但是分享出来后只有一个图片,没有文字,title
和descr
都没有,后来又看到UMSocialMessageObject
这个类中有个text
属性,说明是非纯文本分享文本,把分享的文字和链接都设置到text
里面,终于成功了,下面贴下代码
// 判断分享类型,如果是微博,单独处理
if (platformType == UMSocialPlatformType_Sina) {
UMShareImageObject *shareObject = [UMShareImageObject shareObjectWithTitle:nil descr:nil thumImage:nil];
// 分享的图片
shareObject.shareImage = thumbImage;
// 分享的文字和链接
messageObject.text = [NSString stringWithFormat:@"%@%@", data.share_title, data.web_url];
messageObject.shareObject = shareObject;
}
不知道是UMShareWebpageObject
这个类不起作用了,还是我使用的姿势不对,如果有人知道可以分享下。
微信
关于微信的更新友盟SDK上有说明
1、SSO白名单中额外增加了weixinULAPI
2、增加设置universalLink的API,需要在初始化SDK的时候设置,同时需要在微信开放平台配置universalLink
//配置微信平台的Universal Links
[UMSocialGlobal shareInstance].universalLinkDic = @{@(UMSocialPlatformType_WechatSession):
@"https://umplus-sdk-download.oss-cn-shanghai.aliyuncs.com/"};
设置之后试了一下,发现跳转到微信后显示正在连接中,之后又跳回APP就没反应了,后来通过查询微信的SDK发现需要设置Universal Links系统回调,后来看了看友盟的SDK,也提供了方法
3、设置Universal Links系统回调
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler
{
if (![[UMSocialManager defaultManager] handleUniversalLink:userActivity options:nil]) {
// 其他SDK的回调
}
return YES;
}
通过上面的三步,微信分享成功了,但是在首次分享的时候会出现“正在连接”的提示,并跳转返回app后再打开微信出现联系人列表,第二次分享就没问题了,这应该是微信升级Universal Links的一个坑吧。
更新友盟SDK6.9.8之后分享到QQ会提示一个错误,具体是什么忘记了,更新步骤跟微信差不多
1、需要额外增加SSO白名单mqqopensdklaunchminiapp和mqqopensdkminiapp
2、增加设置universalLink的API
3、设置Universal Links系统回调
第2步略有不同,具体是需要在QQ互联的官网,找到对应的APP,设置universalLink,具体可查看填写及校验universallinks,然后更新apple-app-site-association文件
最后
通过上面的步骤,友盟分享6.9.8的坑最终都解决了,如果你有疑问或者建议,欢迎在下面留言,我们一起交流学习。