iOS微信分享,返回app再二次跳转微信问题的解决
原因
Universal link配置有问题。微信SDK无法使用universal link方式跳转微信,采用了兜底方案schema方式跳转微信,形成二次跳转。
问题定位
打开iOS项目注册微信应用的处理后,临时加上自检,并打开日志开关。
[WXApi registerApp:WXAppkey universalLink:UNIVERSAL_LINK];
// 临时加上这段 start
[WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult * _Nonnull result) {
NSLog(@"WXApi checkUniversalLinkReady:%@ %@", @(step), result);
}];
[WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString * _Nonnull log) {
NSLog(@"WXApi log:%@", log);
}];
// 临时加上这段 end
XCode控制台可以看到相关日志,其中最关键的信息是
Universal Link check failed. The application is launched by WeChat via scheme
2023-04-11 21:14:09.105187+0800 Location[441:7697] WXApi checkUniversalLinkReady:0 WXCheckULStepResult[success: 1, errorInfo: check passed, suggestion: ]
2023-04-11 21:14:09.105736+0800 Location[441:7697] WXApi checkUniversalLinkReady:1 WXCheckULStepResult[success: 1, errorInfo: check passed, suggestion: ]
2023-04-11 21:14:09.107327+0800 Location[441:7697] WXApi checkUniversalLinkReady:2 WXCheckULStepResult[success: 1, errorInfo: check passed, suggestion: ]
2023-04-11 21:14:09.113546+0800 Location[441:7697] WXApi checkUniversalLinkReady:3 WXCheckULStepResult[success: 1, errorInfo: check passed, suggestion: ]
2023-04-11 21:14:09.554379+0800 Location[441:7697] WXApi log:wxlog:launch app with ul only success
2023-04-11 21:14:09.554426+0800 Location[441:7697] WXApi checkUniversalLinkReady:4 WXCheckULStepResult[success: 1, errorInfo: check passed, suggestion: ]
2023-04-11 21:14:09.554482+0800 Location[441:7697] WXApi log:wxlog:Successfully starting WeChat with the universal link.
2023-04-11 21:14:15.857426+0800 Location[441:7697] WXApi checkUniversalLinkReady:5 WXCheckULStepResult[success: 0, errorInfo: Universal Link check failed. The application is launched by WeChat via scheme, suggestion: Common problems self-check guide: [微信开放平台App iOS端接入新版本SDK 常见问题自查指引]https://developers.weixin.qq.com/community/develop/doc/000ce0403bc9d0ea1a0a67f415b409]
2023-04-11 21:14:15.857506+0800 Location[441:7697] WXApi log:wxlog:Error:WXCheckULStepResult[success: 0, errorInfo: Universal Link check failed. The application is launched by WeChat via scheme, suggestion: Common problems self-check guide: [微信开放平台App iOS端接入新版本SDK 常见问题自查指引]https://developers.weixin.qq.com/community/develop/doc/000ce0403bc9d0ea1a0a67f415b409]
配置步骤
这个配置涉及到很多方面,任何一个环节不对就会出问题。
这次解决问题,趁热打铁重新整理了下universal link的配置步骤。
1、确保文件 apple-app-site-association格式正确 文件内可设置多个app信息,一个app内也可以设置多个path,比如同时某个app的微信应用universal link path,和QQ应用universal link path。 其中,appID为teamlD+bundle1D 例子:
{
"applinks":{
"apps":[],
"details":[
{
"appID":"8U6XXXX.com.location.aaa",
"paths:["/patha1/*","/patha2/888888/*"]
},
{
"appID":"8U6XXXXX.com.location.bbb",
"paths”:["/pathbbbb/*"]
}
]
}
}
2、确保配置文件apple-app-site-association已放在服务器的.well-known文件夹下 之后,访问 https://www.aaaa.com/apple-app-site-association, 确保文件得能下载下来。
3、在微信应用平台上(https://open.weixin.qq.com),设置该app的iOS应用Universal Links字段如下,包含域名和path,并以斜杠/结尾
https://www.aaaa.com/patha1/
4、确保苹果开发者账号网站上,该应用的Associated Domains已打开
5、Xcode的Associated Domains设置中添加一个Domian,前后不含斜杠/
applinks:www.aaaa.com
6、app初始化处理中,注册微信应用的处理中,带上UNIVERSAL_LINK,
// 这里常量UNIVERSAL_LINK设置为 https://www.aaaa.com/patha1/
[WXApi registerApp:WXAppkey universalLink:UNIVERSAL_LINK];
7、在application的openURL方法中,添加微信回调处理
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options {
。。。
if ([url.scheme isEqualToString:WXAppkey]) {
return [WXApi handleOpenURL:url delegate:self];
}
。。。
}
8、在application的Universal link回调方法中,添加微信回调处理
// Universal link的回调
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler {
。。。
res = [WXApi handleOpenUniversalLink:userActivity delegate:self];
if (res) {
return YES;
}
。。。
}
9、由于这个配置与iOS自身机制,以及微信后台数据同步有关。完成以上配置重新安装app第一次运行时,不一定能马上拉取到配置数据。如未生效,建议删除app并重启手机。
网上查询了相关资料,什么时候会触发更新 apple-app-site-association 文件,
-
开发环境:删除 App, app 安装才会去更新 apple-app-site-association 文件
-
App Store: 用户更新就会更新去更新 apple-app-site-association 文件