如何防止ios universal link 当用户点击子域A页面中的url时打开APP,并且url正在linking到子域B

how to prevent ios universal link open the APP when user click a url in subdomain A page, and the url is linking to subdomain B

我们在 ios APP 中添加了关联域,如下所示:

<string>webcredentials:*.mywebsite.com</string>
<string>applinks:*.mywebsite.com</string>

我们还为所有子域上传了 apple-app-site-association 文件。如下所示:

{
   "applinks": {
      "apps": [],
      "details": [
         {
            "appID": "XXXXX.com.mywebsite.www",
            "paths": [
               "NOT /whatever",
               "some other paths here",
               "/"
            ]
         }
      ]
   },
   "webcredentials": {
      "apps": [
         "XXXXX.com.mywebsite.www"
      ]
   }
}

如果用户在 google 到 www.mywebsite.com 的 google 页面上单击 url,它会正常打开应用程序。

但我的问题是,如果我们有一个 subdomainA.mywebsite.com/test.html,像这样:

<a href="https://www.mywebsite.com/">HOME</a>

如果用户点击link,它也会打开APP,这不是我想要的。

所以我的问题是,如果在子域 A 上用户单击 link 到子域 B 的 url,并且 url 的路径已在应用站点关联文件中注册。 ios能知道它们只是子域所以不打开APP吗?

您可以通过将 AASA 文件中的路径列入黑名单来禁用通用链接。 在您的 AASA 文件中的路径前添加 NOT 不会触发您的 url.

的应用程序打开
{
"applinks": {
    "apps": [ ],
    "details": [
        {
            "appID": "XXXXX.com.mywebsite.www",
            "paths": [ "http://www.mywebsite.com/", "NOT http://www.subdomainA.mywebsite.com/test.html"]
        }
    ]
  }
}

这是相同的苹果文档: Universal Links

我们最终向 Apple 寻求帮助。如我所料,我们不能告诉 Apple/IOS 不要在具有相同通用 link 的两个子域之间启动 APP。我们唯一能做的就是,如果在子域 B 中有一个 url link 到子域 A,并且这个 url 是通用的 link,我们必须添加一些特殊的查询或哈希到url,例如url?within_subdomains=1,然后在AASA文件中,我们添加“NOT *within_subdomains=1”,