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

时间:2016-12-13 07:42:43

标签: ios iphone ssl deep-linking ios-universal-links

我已经阅读了很多关于通用链接的文章,但我仍然需要明确一些事情。

我必须添加http://www.domain.com的通用链接,但由于某些原因,我将无法使我的网站获得SSL认证,甚至无法在根文件夹中将https与apple-app-site关联。所以我想以不同的方式做到这一点,我会将apple-app-site-association文件放在子域的根目录中,让我们说https://www.app.domain.com/apple-app-site-association

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

Questions in my mind :-
  
      
  1. apple说 - 文件需要通过HTTPS访问 - 没有任何重定向 -at https:/// apple-app-site-association 。   在这一行中,没有任何重定向,苹果的意思是什么?

  2.   
  3. 当apple找不到与特定网址相关的任何通用链接时,它本身会将其重定向到safari。

  4.   
  5. 这是一种安全的方式来添加通用链接,还是必须将我们的主域名设置为https或至少 apple-app-site-association https
  6.   

2 个答案:

答案 0 :(得分:4)

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

  1. '没有重定向'表示当iOS请求https://www.app.domain.com/apple-app-site-association时,它必须在该地址找到该文件。您无法进行任何类型的重定向(Javascript,301,302等)
  2. 如果网址对于Universal Links无效,因为您没有使用apple-app-site-association文件中的包含规则来覆盖它,则会使用Safari打开它。如果网址位于没有有效apple-app-site-association文件的其他网域上(例如http://www.domain.com/),则该网址也会在Safari中打开。
  3. 是的,没关系。绝对是一种解决方法,但并非不安全。
  4. 您还应该调查托管的深层链接服务,例如Branch.io(完全披露:我在分支机构团队中)或Firebase动态链接。这些将为您提供所有相同的好处(加上更多的灵活性,说实话),没有任何设置问题。

答案 1 :(得分:1)

我们经历过iOS 302 工作的方法。 总的来说,我完全同意Apple正式似乎不支持任何重定向。 以下案例已经在运行iOS 11的iPhone 6上进行了测试。

这些案例有效:

  • iOS版Chrome浏览器中的网站:用户点击链接 A 302 将其重定向到通用链接 B
  • iOS上的Safari网站:用户点击链接 A 302 将其重定向到通用链接 B
  • iOS上的Gmail应用:用户点击电子邮件中的链接,Gmail打开外部Chrome浏览器,打开Goog​​le链接,重定向链接 A ,通过302重定向到Universal Link B < / strong>即可。 (此案例仅适用于安装了Chrome的情况,并且在Gmail设置中,用户明确将默认浏览器更改为Chrome)

这些情况不起作用:

  • Apple Mail:用户点击电子邮件中的 A 链接,打开外部Safari。 302发生并打开通用链接 B 。结果:应用程序无法打开
  • Gmail应用:用户点击电子邮件中的链接 A ,并打开Gmail inAppBrowser(可能是WKWebview?)。 Gmail通过谷歌服务器重定向来自电子邮件的每个链接,因为第二步链接 A 打开(不知道通过302或其他方法)然后302发生并打开通用链接 B 。结果:应用程序无法打开

不幸的是,您可以看到在某些情况下它不起作用。在这些情况下,iOS上的Apple Mail和Gmail对我们这里的大多数人来说都非常重要,我认为这是一个非常重要的,你不应该使用它。

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

对于所有感兴趣的调整:我们通过打开一个链接https://app.adjust.com/进行测试...在我们的应用监听的相应通用链接https://XXXXXXX.adj.st/上有一个302。