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

iOS apple-app-site-association含#号URL排除规则失效问题求助

iOS深度链接排除带#号URL的解决方案

问题核心

iOS的App Site Association(ASA)文件在匹配URL时,不会处理锚点(#后面的内容),所以你之前写的包含/#/register的规则根本不会生效——ASA只匹配#之前的路径部分。

可行解决方法

方法1:在App内拦截处理

既然ASA无法识别锚点内容,就把逻辑移到App内部:

  • 先让ASA匹配这个域名下的所有路径(或者你原本需要的合法路径),不要用exclude规则
  • 当App被唤起后,在处理深度链接的代码里,解析完整URL的锚点部分
  • 如果锚点是/register,就直接终止跳转,让用户留在浏览器

示例Swift代码:

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    if let fragment = url.fragment, fragment == "/register" {
        // 不处理该链接,返回false让系统回到浏览器
        return false
    }
    // 处理其他合法深度链接逻辑
    return true
}

方法2:服务器端URL重定向

如果不想修改App代码,可以在服务器上做处理:

  • 把带#/register的URL重定向到一个不被ASA匹配的路径(比如/exclude-register)
  • 确保ASA文件里不包含这个新路径的匹配规则,这样浏览器就不会唤起App

为什么之前的规则无效

ASA文件的路径匹配仅针对URL的路径部分(域名之后、#之前的内容),#及其后面的锚点属于客户端处理的内容,不会被苹果的ASA解析器读取,所以你写的包含/#/register的exclude规则完全不会被识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:34:52