ios - iOS 12.1.2 branch.io 通用链接打开应用程序,但没有数据存在
问题描述
我正在尝试通过 branch.io 为 iOS 应用程序(Swift 4.2)实现深层链接。我已经完全按照分支文档中的说明集成了 iOS SDK。为了测试集成,我运行了 branch.io 通用链接验证脚本,它成功通过了。
通用链接不起作用的原因:
单击“笔记”或“消息”中的深层链接会打开应用程序,但不会传递任何数据。在查看调试日志时,Branch 会报告一个完全空白的 url ( 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 缓存和 cookie,但没有成功。
我还要提一下,深层链接本身应该没有问题。在 Android 上,相同的深层链接可以完美运行。
这两种方法都无法使用立即可用的深度链接数据打开应用程序。还有其他选择可以使这项工作吗?
更新:URI 和通用链接是单独的问题。我们通过仔细检查我们的 URI 方案(它不正确)使 URI 工作。对于通用链接,Branch 的 Swift 4.2 文档中可能存在轻微错误。请参阅我的答案以获取解决方案。
更新 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]
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
}
推荐阅读
- sql - 从 UI 调用 SQL 存储过程
- python - 将元素附加到列表并从另一个列表中删除
- python - 使用正则表达式,获取字符后的字符串,特殊情况
- arrays - 数组 r 中的 24 个值的平均值
- javascript - 使用 ajax 调用中的 json 填充脚本后无法访问脚本中的数据变量
- javascript - React 中屏蔽输入的 onChange 问题
- android - AdapterView 不支持 addView(View) - LinearLayout 嵌套在 ListView 中
- python - 事件驱动的有限状态机中的转换
- html - 绝对位置平滑过渡
- r - 处理 R 中的缺失值,包括 NULL