背景:
2020年3月20日起微信对旧版本 SDK 发起的分享增加“未验证应用”安全提示。所以导致很多用户分享的时候,会提示未验证应用。
资料:
微信开放平台的文档:
https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html
问题排查文档:
https://docs.qq.com/doc/DZHNvSGJLS3pqbHNl?tdsourcetag=s_macqq_aiomsg
我的app的背景:
app微信分享接的友盟,其中用的是微信的精简版。登录用的微信官方平台的最新sdk1.8.7.1,分享的时候就会遇到应用未验证的情况。
开始解决问题:
创建一个文件命名一定要是apple-app-site-association,文件不能有后缀。文件内容如下图:
其中"wechat"可以根据自己需求来写(实际上可以任意写为了区分多个app的)。上述两个ID,可以在苹果开发者中心查找,具体位置如下图,顺便将Associated Domains选中。
保存文件,然后把文件放到服务器的根目录中(可读和下载状态都可以)。
2.配置项目
在开发者中心我们已经开启了Associated Domains,也要在xocode里面开启。targets->signing&capabilities->+capability->Associated Domains。然后Domins点击加号填入相应内容,内容格式为applinks:+ App的域名 (例如:applinks:wangyi.com,App域名实际上就是在微信开放平台设置的Universal Link的域名)。
3.配置微信开发平台信息
微信开放平台Universal Link要设置,App的域名(例如https://wangyi.com/wechat/)。
4.项目plist文件
sdk要求加上weixinULAPI。
5.增加新方法
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL*webUrl = userActivity.webpageURL;
NSLog(@"continueUserActivity:%@",webUrl);
}
//当APP被UniversalLink调起后,
BOOL ret = [WXApi handleOpenUniversalLink:userActivity delegate:self];
return ret;
}
检测是否配置成功
1.先检测Universal Link是否配置成功。
上述四步配置好后,卸载app,然后重新跑一下项目。这时会重新下载apple-app-site-association文件。然后打开safari,输入Universal Link+(随便写)(如https://wangyi.com/wechat/aaa),然后下拉一下打开的网页。
当出现这个条目,并且点击打开的时候能跳转到自己的app,说明Universal Link配置成功了。
2.检测Universal Link是否认证成功
在注册微信的方法后调用自检函数
[WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult* result) {
NSLog(@"wechatSdkre %@, %u, %@, %@", @(step), result.success, result.errorInfo, result.suggestion);
}];
如果自检函数能走到第6步,说明认证成功。
如果授权登录没有二次弹框确认,分享除首次外不会二跳 (二跳和二次确认如下图)
如果到这里,分享还是显示未验证应用的话,只有等待了。
ps:本人都配置好,并且验证Universal Lin通过了,但是分享还是显示 未验证应用。等了三天后,我把友盟的微信分享删了,代码里改成了微信sdk的分享,第二天中午再次分享的时候,未验证应用消失了。
可能有写的不清楚或者错误的地方,请大家指正。谢谢。如果有不懂的地方可以留言。
网友评论