Vla*_*lad 2 deep-linking ios 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方案,它在重定向到之前在Safari中显示错误$fallback_url。我还尝试过重新安装应用程序,清除Safari缓存和cookie,但未成功。
我还要提到,深层链接本身应该没有任何问题。在Android上,相同的深层链接可以完美运行。
两种方法都无法使用立即可用的Deeplink数据打开应用程序。还有其他选择可以使这项工作吗?
更新:URI和通用链接是单独的问题。我们通过仔细检查URI方案来使URI正常工作(这是不正确的)。对于通用链接,Swift 4.2的Branch文档中可能会存在一些错误。请参阅我的答案以寻求解决方案。
更新2019-02-05:分支文档已更新为Swift 4.2。一切都很好。
更新2019-02-05:分支文档现在是Swift 4.2的最新文档。
原始答案:
好的,我们找到了解决通用链接无效的方法。我相信分支文档不是Swift 4.2的最新版本。在处理通用连接,该func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void)协议应使用[UIUserActivityRestoring],而不是[Any]为restorationHandlerPARAM。见下文:
当前的分支机构文档(不起作用):
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
// handler for Universal Links
Branch.getInstance().continue(userActivity)
return true
}
Run Code Online (Sandbox Code Playgroud)
上面的函数还会在XCode中引起警告。自动修复它不起作用,它只会将其转换为私有函数,而不是正确的协议。
校正(工作):
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
// handler for Universal Links
Branch.getInstance().continue(userActivity)
return true
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1174 次 |
| 最近记录: |