我有几个分支链接,旨在深入链接到我的iOS应用程序并将图像预加载到UIImageView。它们在安装应用程序时可以正常工作,无论它是在后台还是已经终止。但是,如果尚未安装该应用程序,它们将无法运行。它们正确链接到应用程序商店,但是一旦安装了应用程序,参数似乎无法正确流动。
我说参数没有SEEM流过,因为我找不到测试方法,因为我认为没有办法通过Xcode中的deeplink模拟一个全新的应用程序安装。我知道我可以在没有应用程序自动启动的情况下从Xcode构建到我的手机,然后点击深层链接,但到那时,应用程序已经安装在我的手机上,因此它违背了测试的目的。如果有人知道通过deeplink测试应用程序安装的方法,我很乐意接受这些信息并与它一起运行一段时间......
这是一个深层链接的例子,它应该将图形加载到衬衫设计中:
https://bnc.lt/l/5wGbOak_QW
有没有人知道Branch在安装后没有正确发送数据的任何已知问题?
编辑:这是我现在在appDelegate分支代码中得到的内容。我无法证明url没有设置,但HomeViewController没有像非安装后启动那样下载链接图像。就像我之前提到的,我不知道如何模拟这种情况,因为Xcode模拟器总是先安装,所以我没有机会模拟单击预安装链接。
let branch: Branch = Branch.getInstance()
branch.initSessionWithLaunchOptions(launchOptions, andRegisterDeepLinkHandler: { params, error in
if (error == nil) {
if let url = params["product_picture_url"] as? String {
let url = NSURL(string: url)!
HomeViewController.injectedImageUrl = url
}
}
})
您是否可以在安装应用程序之前确认是否单击了该链接?以下是使参数通过全新安装的测试流程:
- 卸载应用程序
- 将链接粘贴到Safari中,然后单击它。如果您在模拟器上,则会在尝试打开未安装的App Store时看到错误消息。
- 从Xcode运行测试应用程序
- 绝对应该将参数传递给init
如果这不起作用,这里有一些其他的故障排除建议:
您是否可以添加日志记录以确保已将initSession添加到首次打开时执行的右侧委托方法。它应该在这个委托方法中:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
另一种常见情况是可以使用Test键创建链接,并且您的plist中有Live键。分支不允许从Test - > Live进行深度链接,反之亦然。如果您不确定链接与哪个键相关联,可以将?debug = true附加到链接上(例如 https://bnc.lt/l/5wGbOak_QW?debug=true)在仪表板上选择Test或Live后查看详细信息。如果您选择了错误的密钥,则会显示“未找到链接”。否则,它将显示链接的详细信息。
我通过更改其中一个回调的签名来拍摄自己 AppDelegate
。
我有
func application(_: UIApplication, continue userActivity: NSUserActivity, _: @escaping ([Any]?) -> Void) -> Bool
而正确的签名是
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool
结果,我会永远得到 ["+clicked_branch_link": 0, "+is_first_session": 0]
在深层链接处理程序中,在安装应用程序数据后的第一次启动时,将按预期方式使用。并且没有一个关于分支SDK关于缺失回调的窥视¯\ _(ツ)_ /¯有趣的是,日志中的Google Login SDK发出了警告。