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

iOS含#!/路径的Universal Link配置失效问题求助

为什么你的配置没用?

Universal Link 的 AASA 文件根本不支持匹配 URL 里的哈希片段(就是#及后面的内容)。苹果的机制只会解析#前面的路径部分,哈希片段完全不参与 AASA 的路径匹配,这就是你试了各种#相关规则都无效的核心原因。

可行的解决思路

1. 调整 URL 结构(最推荐)

把哈希片段里的路径挪到#前面,比如把https://example.com/#!/courses/xxx/home改成https://example.com/courses/xxx/home,然后在 AASA 文件中配置对应规则:

{
  "applinks": {
    "details": [
      {
        "appIDs": ["你的团队ID.你的BundleID"],
        "components": [
          {
            "/": "/courses/*/home",
            "comment": "匹配courses下任意子路径的home页面"
          }
        ]
      }
    ]
  }
}

这是最稳妥的方案,完全贴合 Universal Link 的设计逻辑。

2. 服务器端重定向

如果没法修改原有 URL 结构,就在服务器做重定向:当用户访问带#!/的链接时,自动跳转到不带哈希的路径(比如https://example.com/uni-link/courses/xxx/home),同时在 AASA 中配置这个新路径的规则。

注意:必须使用301/302跳转,且跳转后的 URL 要符合 AASA 配置,iOS 会跟随重定向并匹配对应规则。

3. 先唤起应用再解析哈希

如果以上两种方案都无法实施,先配置一个匹配根路径的规则:

{
  "applinks": {
    "details": [
      {
        "appIDs": ["你的团队ID.你的BundleID"],
        "components": [
          {
            "/": "/",
            "comment": "匹配根路径"
          }
        ]
      }
    ]
  }
}

这样用户点击链接时,Universal Link 能正常唤起应用,之后在应用的application(_:continue:restorationHandler:)方法中获取完整 URL,自行解析哈希片段后跳转到对应页面即可。

验证注意事项

  • 修改 AASA 文件后,需强制刷新 iOS 缓存:可以卸载重装应用,或者执行命令xcrun simctl openurl booted "https://example.com/apple-app-site-association"触发缓存更新。
  • 确保 AASA 文件的 Content-Type 为application/json,且服务器必须支持 HTTPS 访问。

内容的提问来源于stack exchange,提问作者Krishnabhadra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:20:54