问题 iOS的Branch.io链接在安装后不传递数据,但适用于冷启动


我有几个分支链接,旨在深入链接到我的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
    }
  }      
})

5827
2018-06-27 01:34


起源

邮政编码plz ... - kittykittybangbang
我在我的appDelegate中使用标准的分支代码,但是我无法测试params是否正在通过,因为我不知道在安装应用程序之前模拟分支链接点击的任何方法...所以我不知道params是否进入/通过分支代码,我所知道的是应用程序的行为不像是填充它们。我将更新上面的帖子,以包含我在appDelegate中获得的代码 - othomas


答案:


您是否可以在安装应用程序之前确认是否单击了该链接?以下是使参数通过全新安装的测试流程:

  1. 卸载应用程序
  2. 将链接粘贴到Safari中,然后单击它。如果您在模拟器上,则会在尝试打开未安装的App Store时看到错误消息。
  3. 从Xcode运行测试应用程序
  4. 绝对应该将参数传递给init

如果这不起作用,这里有一些其他的故障排除建议:

  1. 您是否可以添加日志记录以确保已将initSession添加到首次打开时执行的右侧委托方法。它应该在这个委托方法中:

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    
  2. 另一种常见情况是可以使用Test键创建链接,并且您的plist中有Live键。分支不允许从Test - > Live进行深度链接,反之亦然。如果您不确定链接与哪个键相关联,可以将?debug = true附加到链接上(例如 https://bnc.lt/l/5wGbOak_QW?debug=true)在仪表板上选择Test或Live后查看详细信息。如果您选择了错误的密钥,则会显示“未找到链接”。否则,它将显示链接的详细信息。


11
2018-06-30 01:43



辉煌!我没有考虑在没有安装应用程序的情况下单击链接,然后从Xcode加载以模拟后点击全新安装。我能够用这个测试并意识到我的默认viewController是在分支服务用它的参数响应之前从故事板启动的。此时分支代码正在运行,但我的视图未更新以反映更改。谢谢你的帮助! - othomas
我很难跟踪安装,发现这篇文章。我意识到每次安装都需要一个新设备。由于分支无法跟踪卸载,因此假定用户在第一次安装之后的每个后续安装中都已经拥有该应用程序,因此它将其视为“打开”。对我来说,关键是单击模拟器 - >重置内容和设置。这有效地生成了一个新设备。然后单击您尝试在模拟器中测试的链接。然后从Xcode运行您的应用程序。这再现了100%的安装。 - Sean
大!解决了它。测试< - >实时是问题,但是 debug=true 很高兴知道!很高兴我弄错了,在这里发现了这块金币 - hashier


我通过更改其中一个回调的签名来拍摄自己 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发出了警告。


0
2018-03-14 13:12