iOS - 通用链接存在Bug

7
我已经按照此处列出的步骤完全设置了我的iOS应用程序中的通用链接:

如何设置通用链接

使用Branch和Apple验证器都可以成功验证100%。但是现在,当我尝试测试完成的产品时,我遇到了麻烦。
如果我键入或点击指向我的网站的链接(例如www.mydomain.com),Safari / Chrome / Facebook会直接转到我的网站。
但是,如果我转到Google,在搜索栏中键入www.mydomain.com,找到指向我的网站的链接并长按该链接,则“在我的应用”是其中之一的选项,而且可以完美地工作。
为什么会这样?我正在抓狂!
1个回答

25

非常遗憾,通用链接并不能在所有地方使用。根据这个页面

  • 短信 | 可用
  • 邮件 | 可用
  • Whatsapp | 可用
  • Slack | 如果将其设置为打开 Safari 而不是应用内浏览器(使用 SFSafariViewController),则可用
  • Safari | 有条件可用
  • Chrome | 有条件可用
  • Google | 有条件可用
  • Gmail | 如果安装了 Chrome,则在 Chrome 中打开链接(而不是通用链接)。否则,有条件可用
  • Inbox | 如果安装了 Chrome,则在 Chrome 中打开链接(而不是通用链接)。否则,可用
  • Twitter | 有条件可用
  • Facebook | 有条件可用
  • FB Messenger | 有条件可用
  • 微信 | 有条件可用
  • Pinterest | 不可用
  • Telegram | 不可用(使用 SFSafariViewController)

注:有条件可用意味着它有时会起作用(即打开应用程序):

  • 如果将链接粘贴到浏览器 URL 字段中,则通用链接将无法使用。
  • 跨域用户驱动的 <a href="..."> 元素点击可以使用通用链接。例如:如果在 google.com 上有一个指向 bnc.lt 的通用链接,它将打开应用程序。
  • 在同一域上用户驱动的<a href="..."> 元素点击不会使用通用链接。例如:如果在 google.com 上有一个指向另一个 google.com 上的通用链接,它将不会打开应用程序。
  • 通用链接不能通过Javascript触发(在window.onload或通过.click()调用<a>元素),除非它是用户操作的一部分。
  • Google、Gmail、Inbox、Twitter、Facebook、FB Messenger、WeChat - 通用链接仅在您已经打开Webview时才起作用。换句话说,它们不会从动态信息流/主视图中的应用程序内部起作用。同样地,它们还必须是跨域的。也就是说,如果您的用户在yourapp.com上并点击了一个针对yourapp.com的通用链接,它将无法工作。但是,从yourapp.com点击到bnc.lt将触发链接以通用链接的方式直接打开您的应用程序。

  • 所以,苹果在iOS9+中杀死了我的Deep Links,并提供了一种有条件的替代方案? - Adam G
    @AdamG 是的,基本上是这样的 :(. 现在情况一团糟...希望iOS 10能带来一个真正的解决方案。 - Alex Bauer
    @AlexBauer,谢谢。你节省了我几个小时的时间。我有一个问题,你说-->通用链接将无法与用户驱动的<a href="...">元素单击在同一域上工作。我的问题是,如果从http页面转移到另一个https页面,它会打开应用程序吗? - Md Mahbubur Rahman
    @MuhammadMahbuburRahman 单纯将http转换为https是不够的,因为这并不是实际上的域名转移。这只是访问同一域名的两种方式。您需要为链接href使用不同的域名。 - Alex Bauer
    2019年更新:它们可以与JavaScript一起使用,使用window.location。 - ericjam

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接