iOS 微信SDK登录/分享问题 “未验证应用”和“二次拉起”.
微信分享universal link. 导致“未验证应用”和“二次拉起”
- 使用SDK 自检函数排查接入问题
SDK1.8.7版本,WXApi新增了自检函数checkUniversalLinkReady:,帮助开发者排查SDK接入过程中遇到的问题。
如果出现了问题,开发者
首先通过该函数检查问题.
[WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString * _Nonnull log) {
NSLog(@"WeChatSDK: %@", log);
}];
[WXApi registerApp:@"wxAppID" universalLink:@"wxUniversalLink"];
[WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult * _Nonnull result) {
NSLog(@"WeChatSDK: %@, %u, %@, %@", @(step), result.success, result.errorInfo, result.suggestion);
}];
如:
2021-03-04 16:02:51.114537+0800 [1831:776302] WeChatSDK: 5, 0, Universal Link
check failed. The application is launched by WeChat via scheme, Common problems
self-check guide: [微信开放平台App iOS端接入新版本SDK 常见问题自查指引]
https://developers.weixin.qq.com/community/develop/doc/000ce0403bc9d0ea1a0a67f415b409
扒拉微信开发平台QA, 可以确定就是Universal link
问题.
1).自行用safari检查universal links配置是否成功。
Safari输入Universal Links(包括完整路径)+随机字符串(apple-app-site-association文件中path下的*号)
,下拉页面看是否有拉起app的入口提示
比如配置的Universal Links: https://help.wechat.com/app/
输入safari的测试Universal Links: https://help.wechat.com/app/abc
配置项
举个例子:
Universal Links域名为 https://help.wechat.com
- 配置一:在自己的网站
https://help.wechat.com
根目录下配置以下json文件
配置文件apple-app-site-association文件
json内容:
{
"appID": "8P7343TG54.com.tencent.xin.SDKSample",
"paths": ["/sdksample/*"]
}
path
中必须配置*
-
配置一:在"微信开放平台登记"以及在"openSDK"传入的Universal Links正确是:
https://help.wechat.com/sdksample/ -
配置二:"Xcode domains"中不包含 path, 可配置多个domain域名, 不过每个域名的根目录都应有
apple-app-site-association文件
applinks:help.wechat.com
applinks:ive.wechat.com
apple-app-site-association路径.
两个目录下: 域名根目录
和域名根目录/.well-known/
https://domain.com/.well-known/apple-app-site-association
https://domain.com/apple-app-site-association
在App第一次运行时, 若App支持Associated Domains
, 我们的iOS App会自动去GET定义的Domain下的apple-app-site-association文件.
- 请求顺序
先请求域名根目录/.well-known/
https://domain.com/.well-known/apple-app-site-association,
如果失败, 会再去请求域名根目录
https://domain.com/apple-app-site-association
扩展: 备忘录和safari中都可以打开app,怎么分享到其他app里面就不行了?
未跨域导致的.
如:分享到微信的链接是·https://domain.com/share.html
,然后该网页中的“在app内打开”按钮配置的通用链接为https://domain.com/index.html
。
跨域的意思是说,通用链接 和 调用通用链接的网页不要使用同一域名。
即如果通用链接域名为domain.com,则通用链接所处的网页域名就不能是domain.com。
只有跨域后, universal link才生效.