由于苹果iOS 13系统版本安全升级,微信SDK的openSDK1.8.6版本进行了适配。 1.8.6版本支持Universal Links方式跳转,对openSDK分享进行合法性校验,来提升使用过程中的安全性。如果你的app不做适配,那么有可能在分享的时候会出现“未验证应用”字样。当然,不是所有机型都会出现这个提示,这个和微信的灰度提醒策略有关。
踩过坑的人,为您解答。
1.通用链接文件格式书写
如果有多个应用 不能在paths里直接写一个"paths":["*"] 因为有可能应用A调起微信分享后,返回的时候有可能会造成混乱,本来是应用A 调起的微信分享,分享完成之后,点击返回 有可能会调起应用B(当然这要在手机里同时安装应用A和应用B).
参数解释:
A、其中 app1 和 app2 代表微信的路径(每个APP的这个字段值互斥,不然分享出错,就会出现上面 的情况)。
B、/qq_conn/QQ互联key/ 代表qq的路径
1. 假如说你的域名为www.xxx.com 那你的bundleID1对应的APP :
在微信开放平台配置的路径是:https://www.xxx.com/app1/
在QQ互联上配置的路径是:https://www.xxx.com/qq_conn/QQ互联1/(应该只需要填域名就好了,QQ互联网站上填写的时候下面有标注,具体看下标注) 在QQ互联里按要求配置了之后要点击验证,验证通过才能使用。重新配置了通用链接文件, APP应删除重装。重装是为了让APP重新下载最新的配置文件。微信开放平台,QQ互联上配置了,也删除下应用,重装吧,如果重装了还有问题,那就等会儿,可能会好。等的这个时间大概不到半小时,有可能十分钟就能好。我这边试了下,10分钟才好。
2. 注意这里一定是QQ互联上的key。而且在应用中代码里注册的key 也应该是QQ互联的key。
如下图:
#define UniversalLinksWX @"https://域名/app1/"
#define UniversalLinksQQ @"https://域名/qq_conn/QQ互联id"
#define LKQQAppID @"1018xxxxxx" //应用QQ互联ID
#define LKQQAppKey @"f126xxxxxxxxxxxxxxxxxxxxxxxc7" //应用QQ互联Secret
#define LKWXAppID @"wxe3d1xxxxxxxxxxxxxx56" //微信 AppID
#define LKWXAppKey @"218edefac6cb328fxxxxxxxxxxxxxxxx" //微信 Secret
#define LKSinaKey @"38xxxxxxxxx9" //微博App Key
#define LKSinaID @"2ba83exxxxxxxxxxxxxxxxxxxxxxxc91d" //微博App Secret
另外微信有个自检函数,一共有六步 如果都正确那就说明配置的基本上没啥问题了。
// [WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult * _Nonnull result) {
// NSLog(@"分享==wechatSdkre %@, %u, %@, %@", @(step), result.success, result.errorInfo, result.suggestion);
// }];
3.在info.plist文件里配置的 URL Types QQ 要用腾讯开放平台的ID 不然QQ分享完成之后 返回会有问题。我配置了QQ互联的key 结果每次分享完点击返回 就有个弹框提示 这个是不对的,如果配置了腾讯开放平台申请的key 点击返回就直接能回到应用里。(这里在强调一下,这里的配置是为了分享完成之后 能正确返回你的应用,这里配置tencentxxxxxxx一定是腾讯开放平台的ID,如果配置错了,分享完成点击返回 按钮就返回不了应用。其实也不能讲返回不了,前面说的配置的qq互联的id 也能返回,只不过会多一个弹框询问。具体提示下你可以配置试下)
4.下面的链接 是会出现的一些问题 腾讯整理的解答,你可以看看。我之前分享一直提示“未验证应用” 一直好不了,最后才发现确实是它上面说的,要保证今天的正确的分享率要达标,明天才能正确显示。所以做好了应用,就尽早上线。链接地址,可以看看
https://docs.qq.com/doc/DZHNvSGJLS3pqbHNl?tdsourcetag=s_macqq_aiomsg&jumpuin=544037042
5.补充一步:还要把域名在这里 设置,applinks:www.xxx.com
6.APPdelegate.m 添加回调协议方法 这个具体看下微信文档。
```
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary
{
//6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响
BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url options:options];
if(!result) {
// 其他如支付等SDK的回调
}
returnresult;
}
- (BOOL)application:(UIApplication*)applicationcontinueUserActivity:(NSUserActivity*)userActivityrestorationHandler:(nonnullvoid(^)(NSArray> *_Nullable))restorationHandler
{
if (![[UMSocialManager defaultManager] handleUniversalLink:userActivity options:nil]) {
// 其他SDK的回调
}
BOOL ret = [WXApi handleOpenUniversalLink:userActivity delegate:self];
returnret;
}
```
7.有啥不正确的欢迎指正,有啥不懂的欢迎留言。如果该文章帮到您,动动您的金手指,点个赞。
结束!