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

iOS如何处理带#(片段标识符)的Universal Links通用链接

解决apple-app-site-association匹配带#哈希路径不生效的问题

首先明确规则限制:苹果AASA(apple-app-site-association)默认仅匹配URL中域名之后、哈希符(#)之前的路径部分,#及后续的哈希片段不会被常规的paths规则识别,直接写包含#的路径配置必然无法生效。

方案1:适配iOS 13及以上版本(无需修改前端路由)

iOS 13开始新增fragment字段,专门用于匹配#后的哈希内容,配置示例如下:

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "你的苹果团队ID.你的App Bundle ID",
        "components": [
          {
            "/": "/v3/",
            "fragment": "example/*",
            "comment": "匹配所有https://example.com/v3/#/example/开头的链接"
          }
        ]
      }
    ]
  }
}

字段说明:

  • "/": "/v3/" 匹配#之前的路径部分,和你URL中#前的/v3/完全对应
  • "fragment": "example/*" 匹配#之后的哈希内容,*为通配符,可匹配/example/后拼接的任意子路径

方案2:兼容iOS 12及更低版本

iOS 12及更早系统不支持fragment和components字段,需要修改前端路由模式,将哈希路由(Hash Mode)改为历史路由(History Mode),去掉URL中的#,调整后的URL格式为https://example.com/v3/example/,再用常规paths规则配置即可:

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "你的苹果团队ID.你的App Bundle ID",
        "paths": [ "/v3/example/*" ]
      }
    ]
  }
}

额外注意事项

  • AASA文件必须放置在域名根目录或者.well-known目录下,不能设置301/302等重定向,服务端需将文件的Content-Type设置为application/json
  • 路径和哈希的匹配规则都区分大小写,配置内容需要和实际URL的大小写完全一致
  • 测试前建议卸载重装App触发系统重新拉取AASA配置,避免缓存旧配置导致验证失败

内容的提问来源于stack exchange,提问作者Henry P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:36:01