You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native iOS端Universal Link不生效 iOS14+跳转异常求助

您好,我知道这个问题此前有人询问过,但我始终没找到操作出错的位置,具体情况如下:

  • 已将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:09:03