分支深层链接在不同的应用程序和手机中的工作方式大不相同

Branch deep links works very differently in different apps and phones

我对这里的一个情况很不解。基本上,我有一个带有 2 个参数的分支 link。在我的 iOS 中,它是在设置期间在 deeplink 处理程序设置中处理的。

然而,link 的工作方式却大不相同。我们在 phones 上安装了 TF。应用商店暂无w分支版本

配置如下:

所以.....

  1. 如果它在 chrome 上有效,是否意味着我的集成正确?
  2. 为什么它的工作方式与我的 phone 和另一个 phone 不同,因为我们有相同的 OS?
  3. 如果主要目标是适当地深入link(如电子邮件),那么做一个URL方案会不会更有效,我们可以肯定地知道深度link 会把用户带到我们需要的地方吗?

编辑:解决了部分问题:我的设备是 "disabled for universal links"

现在,这是因为即使 link 似乎有效,也没有调用 continue userActivity!我知道,因为它没有出现在我的调试日志中,并且当我初始化应用程序时,当 deeplink 似乎不起作用时,当我打开应用程序时会触发 deeplink。 :)

  // This is my method signature, its in an appdelegate EXTENSION.
  // could that be the problem?
  // i am using swift 2.3

  func application(application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: ([Any]?) -> Void) -> Bool {
    application.fuckingComprehensivePrint("application continue in appdelegate")
    return Branch.getInstance().continueUserActivity(userActivity)
  }

编辑 2:好的,总而言之,存在三个问题

  1. 我的设备因通用 links
  2. 而被禁用
  3. 我将我的方法签名放在扩展中
  4. 我的方法签名错误(我使用了 swift 3.0 语法)

我的应用程序中也有 URL 处理(与分支分开),这导致它在某些情况下可以正常工作。

来自 Branch 的 Alex:欢迎来到深度 linking 的疯狂世界——这就是 Branch 存在的原因:)。

回答您的问题:

  1. 如果 Chrome 中一切正常,这意味着您的实施至少 部分 正确。这是因为在某些情况下,Branch 仍然可以使用 Chrome 的 URI 方案重定向。如果是这种情况,您的应用将打开 而右上角没有 'forward to web' 箭头(这是您只是通用链接的赠品)。 根据您的描述(Chrome 深 links,但 iMessage 没有),这听起来像您的 openURL 方法(URI 方案 links) 已正确配置,但 continueUserActivity(通用链接)未正确配置。
  2. 由于相同设备上的行为不同,我怀疑 您的 设备上的通用链接可能在测试期间的某个时候被禁用。这很容易做到——谢谢,Apple——但也很容易修复:只需将 link 粘贴到 iOS Notes 应用程序中,长按(而不是强制按下)[=62] =],然后 select Open in [app].
  3. 直到 iOS 9,URI 方案是 事实上 的最佳选择。有了通用链接,以及 Apple 为强制采用它们所做的更改,URI 方案的用户体验越来越 糟糕 (可怕的错误消息,没有回退能力等)。您可以在 this blog post 中更详细地了解这一点。当应用程序尚未安装时,纯香草 URI 方案 deep links 也无法工作,并且许多应用程序不将它们识别为有效的、可点击的 links,因此它们需要被包装在一个常规的http link 带有重定向。

Branch 是一种完全不同的在应用程序中 linking 内容的方法。

与具有内容路径的标准 links 不同,您可以将 Branch links 视为独特的令牌,在应用程序中向您提供无限数量的 key:value 对(包括——如果你真的想要它——a URI path that can be automatically triggered),以完全相同的方式,在任何情况下

因此,无需处理所有不同且不断变化的标准,而是尝试在单击 link 时检测应用程序是否已安装,担心用户可能使用哪个应用程序或浏览器来安装打开link等,只需要等待link键下发即可。 Branch 已将所有这些技术细节抽象到一个单独的框架中。

一开始它在概念上有所不同,但 far 更灵活,因为您不再局限于可以存储在 URI 路径中的数据。