iOS 12.1.2 branch.io Universal Links打开应用程序,但没有数据

时间:2019-01-09 21:01:47

标签: ios deep-linking branch.io ios-universal-links swift4.2

我正在尝试通过branch.io为iOS应用(Swift 4.2)实现深层链接。我已经完全按照分支文档中的概述集成了iOS SDK。为了测试集成,我运行了branch.io通用链接验证脚本,并成功通过了该脚本。

什么对通用链接不起作用: 单击“注释”或“消息”中的深层链接会打开应用程序,但不会传递任何数据。在查看调试日志时,Branch报告的网址为完全空白(example.app.link?%24identity_id=611647344982868361而不是(example.app.link/hj86HlvvMk2?%24identity_id=611647344982868361)。这与不使用深层链接手动打开应用程序相同。通过延迟的深层链接功能也无法获得任何数据。

使用URI方案代替通用链接: 如果我通过branch.io链接设置仪表板关闭了通用链接,则所有URL在浏览器中打开,而没有任何提示打开应用程序。但是,当我手动打开应用程序时,深度链接数据在启动时就可以使用(通过延迟链接功能)。

其他尝试:将$uri_redirect_mode: 2添加到链接数据中以强制应用打开实际上并没有任何改变。唯一不同的是,对于URI方案,它在重定向到$fallback_url之前在Safari中显示错误。我还尝试过重新安装应用程序,清除Safari缓存和cookie,但没有成功。

我还要提到,深层链接本身应该没有任何问题。在Android上,相同的深层链接可以正常工作。

这两种方法都无法使用立即可用的Deeplink数据打开应用程序。还有其他选择可以使这项工作吗?

更新:URI和通用链接是单独的问题。我们通过仔细检查URI方案来使URI正常工作(这是不正确的)。对于通用链接,Swift 4.2的Branch文档中可能会存在一些错误。请参阅我的答案以寻求解决方案。

更新2019-02-05 :分支文档已针对Swift 4.2进行了更新。一切都很好。

2 个答案:

答案 0 :(得分:3)

更新2019-02-05:分支文档现在是Swift 4.2的最新版本。


原始答案:

好的,所以我们找到了解决通用链接无效的方法。我相信分支文档不是Swift 4.2的最新版本。在处理通用链接时,func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void)协议应将[UIUserActivityRestoring]参数使用[Any]而不是restorationHandler。见下文:

当前分支机构文档(不起作用):

func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity, 
                 restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
  // handler for Universal Links
  Branch.getInstance().continue(userActivity)
  return true
}

上述功能还会在XCode中引发警告。自动修复它不起作用,它只会将其转换为私有功能,而不是正确的协议。

纠正(有效):

func application(_ application: UIApplication, 
                 continue userActivity: NSUserActivity, 
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
  // handler for Universal Links
  Branch.getInstance().continue(userActivity)
  return true
}

答案 1 :(得分:1)

这是来自Branch的Jackie。

您可以确保通过以下检查点吗?

如果您仍然看到链接数据未通过,请您将您正在使用的Branch应用ID和链接通过电子邮件发送至Integrations@branch.io,以便我们的团队进行深入研究?