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

oth*_*mas 11 xcode deep-linking 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
    }
  }      
})
Run Code Online (Sandbox Code Playgroud)

Ale*_*tin 11

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

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

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

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

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

  • 我正在努力跟踪安装并找到了这篇文章。我意识到每次安装都需要一个新设备。因为 branch 无法跟踪卸载,它假设用户在第一次安装之后的每个后续安装中都已经拥有该应用程序,因此它就像“打开”一样跟踪它。对我来说,关键是单击模拟器 - > 重置内容和设置。这有效地生成了新设备。然后单击您尝试在模拟器中测试的链接。然后从 Xcode 运行您的应用程序。这将重现安装 100%。 (2认同)