12

我有几个分支链接,旨在深层链接到我的 iOS 应用程序并将图像预加载到 UIImageView 中。它们在安装应用程序后正常工作,无论它只是在后台还是已终止。但是,如果尚未安装该应用程序,它们将不起作用。他们确实正确链接到应用商店,但是一旦安装了应用程序,参数似乎就无法正确通过。

我说这些参数似乎没有通过,因为我找不到一种方法来测试它,因为我认为没有任何方法可以通过 Xcode 中的深度链接模拟全新的应用程序安装。我知道我可以在不自动启动应用程序的情况下从 Xcode 构建到我的手机,然后单击深度链接,但此时该应用程序已经安装在我的手机上,因此它违背了测试的目的。如果有人知道通过深度链接测试应用程序安装的方法,我很乐意获取该信息并使用它运行一段时间......

以下是应将图形加载到衬衫设计中的深层链接示例:

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
    }
  }      
})
4

2 回答 2

13

您能否确认您在安装应用程序之前点击了该链接?这是导致参数通过全新安装传递的测试流程:

  1. 卸载应用程序
  2. 将链接粘贴到 Safari 中,然后单击它。如果您在模拟器上,您会看到一条错误消息,因为它正在尝试打开未安装的 App Store。
  3. 从 Xcode 运行测试应用程序
  4. 参数一定要传入init

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

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

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

于 2015-06-30T01:43:54.843 回答
1

我通过更改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]进入深度链接处理程序,而在安装应用程序后的第一次启动时,数据将按预期可用。并且没有从 Branch SDK 中窥探到缺少回调¯\_(ツ)_/¯ 有趣的是,日志中有来自 Google Login SDK 的警告。

于 2017-03-14T13:12:59.677 回答