React Native iOS端Universal Link不生效 iOS14+跳转异常求助
Universal Link 跨版本跳转异常排查求助
您好,我知道这个问题此前有人询问过,但我始终没找到操作出错的位置,具体情况如下:
- 已将apple-app-site-association文件部署到服务器的
https://ourserver.com/.well-known/apple-app-site-association路径下 - 初始文件内容如下:
{ "applinks":{ "apps":[], "details":[ { "appID":"<teamId>.<bundleId>", "paths":[ "*", "/" ] } ] } }
- 已在项目Capability中添加Associated Domain,配置如下:
applinks:servername.com applinks:dev.servername.com
- 已在AppDeletegate.m中添加如下代码:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { return [RCTLinkingManager application:application openURL:url options:options]; } - (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler { return [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; }
补充1
测试发现iOS 12.4.2版本的iPhone可正常通过Universal Link跳转到App,但iOS 14版本会直接跳转到网页,因此我更新了apple-app-site-association文件内容如下:
{ "applinks": { "details": [ { "appIDs": [ "teamid.bundleid" ], "components": [ { "/": "/*", "comment": "Matches any URL whose path starts with URL_PATH and instructs the system not to open it as a universal link" }, { "/": "*", "comment": "Matches any URL whose path starts with URL_PATH and instructs the system not to open it as a universal link" } ], "paths": [ "*", "/" ] } ] } }
我的网页URL已通过在线校验工具校验,所有测试均在真机上完成。
补充2
以下测试均在iOS 14.4版本的iPhone 11 Pro模拟器上完成:
- 开启开发者模式,将Associated Domain配置为如下内容:
applinks:servername.com?mode=developer applinks:dev.servername.com?mode=developer
模拟器上可以正常跳转到App。
- 故意输错服务器域名,从iMessages点击链接后跳转到Safari浏览器。
- 清除Safari历史记录和缓存后重新点击正确域名的链接,依然跳转到浏览器而非App。
补充3
模拟器端处理:
查阅苹果官方文档了解到Smart App banner相关规则,未找到相关配置后又查阅了相关技术讨论帖,尝试在「设置 - Safari - 高级 - 网站数据」中找到对应域名并清除网站数据,再次测试模拟器可正常跳转到App。
ad-hoc发布包真机测试:
在真机上执行同样的清除网站数据操作,依然跳转到浏览器,无法打开App。
补充4
补充2中的AASA文件会导致iOS 12.4.2版本跳转失效,因此我参考WWDC2019 717号视频将AASA文件修改为如下内容:
{ "applinks":{ "apps":[], "details":[ { "appID":"teamid.bundleid", "paths":["*","/"], "appIDs":["teamed.bundleid"], "components":[{"/":"/*"},{"/":"*"}] } ] } }
更新后iOS 12.4.2版本可正常跳转,但iOS 14及以上版本依然跳转失败。
恳请各位帮忙排查问题,万分感谢!
内容的提问来源于stack exchange,提问作者suja
相关产品推荐
相关产品推荐

