通用 link 不适用于网页 links

Universal link does not work with webpage links

我知道在这个问题上有很多类似的问题,我已经尽力跟进了很多,但我的问题仍然没有解决。任何帮助将不胜感激。

我有一个 AWS 服务器 运行 ASP.NET MVC,我已将文件 apple-app-site-association 放在 .well-known 文件夹下(使用适当的 Web.config 分配 MIME 类型)。我认为故事的这一部分没有配置错误,原因如下:

  1. 我在安装我的应用程序时查看 iPhone 控制台日志,它在访问我的 apple-app-site-association 文件时报告没有错误。
  2. 如果我将 link 粘贴到 Note 中,通过单击 link 它确实会直接打开我的应用程序(没有任何提示)。
  3. 当我扫描包含 link URL 的二维码时,它会提示使用我的应用程序打开它。

但是,如果我有一个使用 <a href="..."> 元素包含相同 link 的网页,当我使用 Safari 或 Chrome 打开该网页时,单击 link 甚至不提示我的应用程序;它只是在浏览器中打开 link。无论我如何尝试,我都无法link打开我的应用程序。

我用 Validation Tool 测试我的 URL 确实有问题,但我找不到原因。它只是说 "Could not extract required information for application links",没有任何可以帮助我确定问题的额外信息。此外,为什么测试失败,但上面的 2. 和 3. 有效?没看懂。

此外,我确实在Branch通过了测试。

相关 link 的 URL 是一个 https URL,与包含它的网页具有相同的域。

有一件事我可能应该提到:当直接访问 URL 时,服务器将响应服务器端重定向(到 App Store 或 Google Play,具体取决于用户代理)。我还尝试修改 URL 以便它响应包含客户端重定向的普通网页,但这没有任何区别。我网页上的 link 仍然在浏览器中打开,而不是打开我的应用程序。在那个带有客户端重定向的新页面中,它会提示我是否要打开 App Store,如果我选择否,然后将页面向下拖动一点,我确实会看到 "Open in App ***" 选项出现(另一个证明事情应该是正确的),但这不是我想要的;我想要 link 直接打开我的应用程序(例如 Instagram 等)。

经过两天的挖掘,我终于找到了答案。问题正是因为包含 link 和 link URL 的网页属于同一域。根据 this page(虽然是中文),自 iOS v.9.2 以来,通用 link 将直接打开我的应用程序,而不会提示,仅当页面和 link 是不属于完全相同的域。这意味着使用不同的子域也可以,正如我刚刚尝试的那样。

这也说明大家不必过于担心官方Validation Tool;那里的考试不及格并不一定意味着你做错了。