iOS 通过子域的深层链接(通用 Link)

iOS deeplink (universal Link) through sub Domain

我已经阅读了很多关于通用 links 的文章,但我仍然需要弄清楚一些事情。

我必须将通用 links 添加到 http://www.domain.com 但由于某些原因,我将无法使我的网站通过 SSL 认证,甚至无法将 apple-app-site-association 与 https 关联在根文件夹中。所以我想到了以不同的方式来做这件事,我将把 apple-app-site-association 文件放在子域的根目录中,比如说 https://www.app.domain.com/apple-app-site-association

然后,只要通用 link 可用,我就会打开每个带有该子域的通用 link,如果通用 link 不可用,则将 https://www.app.domain.com 重定向到 http://www.domain.com可用。

Questions in my mind :-
  1. apple says - file needs to be accessible via HTTPS—without any redirects—at https:///apple-app-site-association. In this line what does apple mean by without any redirects ?

  2. when apple does not find any universal link related to a particular URL, will it itself redirects it to safari.

  3. Is this a safe way to add universal links or is it necessary to have our main domain on https or at-least apple-app-site-association on https

这应该可以正常工作。要明确回答您的问题:

  1. 'Without redirects'表示当iOS请求https://www.app.domain.com/apple-app-site-association时,它必须找到那个地址的文件。您不能有任何类型的重定向(Javascript、301、302 等)
  2. 如果 URL 对于通用链接无效,因为您没有使用 apple-app-site-association 文件中的包含规则覆盖它,它将使用 Safari 打开。如果 URL 在另一个没有有效 apple-app-site-association 文件的域上(例如 http://www.domain.com/),那么它也将在 Safari 中打开。
  3. 是的,很好。绝对是一种解决方法,但并非不安全。

您还应该研究托管深度链接服务,例如 Branch.io(完全披露:我在 Branch 团队)或 Firebase 动态链接。这些将为您提供所有相同的好处(老实说,还有更多的灵活性),而无需任何设置麻烦。

我们经历了 302 在 iOS 上工作 的方式。 总的来说,我完全同意苹果官方似乎不支持任何重定向。 以下情况已经在iPhone 6 运行 iOS 11.

上进行了测试

这些案例有效:

  • iOS Chrome 中的网站:用户点击 link A302 将他重定向到 Universal link B
  • Safari 在 iOS 上的网站:用户点击 link A 并且 302 将他重定向到通用 link B.
  • iOS 上的 Gmail 应用程序:用户在电子邮件中单击 link,Gmail 打开外部 Chrome 浏览器,这会打开 Google link 重定向到 link A,它通过 302 重定向到 Universal Link B。 (这种情况仅在安装 Chrome 并且用户在 Gmail 设置中明确将默认浏览器更改为 Chrome 时有效)

这些案例不起作用:

  • Apple Mail:用户在电子邮件中单击 link A 并打开外部 Safari。 302 发生并打开 Universal link B。结果:App 打不开
  • Gmail 应用程序:用户点击电子邮件中的 link A 并打开 AppBrowser 中的 Gmail(可能是 WKWebview?)。 Gmail 通过 google 服务器从电子邮件中重定向每个 link,作为第二步 link A 打开(不知道是通过 302 还是其他方法) 然后 302 发生并打开 Universal link B。结果:App 打不开

不幸的是,您会发现在某些情况下它不起作用。由于这些情况,iOS 上的 Apple Mail 和 Gmail 对我们这里的大多数人来说非常重要,我认为这是一个阻碍,你不应该使用它。

我们使用 Adjust link 进行了测试,因此在应用未打开的情况下,Adjust 会打开 AppStore 以下载应用。

对于所有对 Adjust 感兴趣的人:我们通过打开 link https://app.adjust.com/... which has a 302 on the respective Universal link https://XXXXXXX.adj.st/... 来测试我们的应用程序在其上侦听。