Branch.io 附加到现有 link 时缺少参数

Branch.io parameters missing when appended to an existing link

我正在尝试让用户点击表单中的 Branch.io link https://a.test-app.link/identifier?foo=bar 然后被重定向到 AppStore 以下载应用程序。然后应用程序应该能够在启动期间获取 foo 参数。

为了调试这个,我遵循了这个过程:

  1. 在测试环境下创建link
  2. 点击设备上的link。
  3. 使用 Xcode 安装应用程序。
  4. 启动应用程序并在启动期间使用

    读取参数
    let branch = Branch.getTestInstance()
    branch.setDebug()
    branch.initSessionWithLaunchOptions(launchOptions, andRegisterDeepLinkHandler: { params, error in
        if error == nil {
            // params are the deep linked params associated with the link that the user clicked -> was re-directed to this app
            // params will be empty if no data found
            print(params)
        }
    })
    

我还在 info.plist 文件中设置了正确的 API 标记。

据我所知,我现在应该在 params 字典中获取我的 foo 参数,但这并没有发生。使参数起作用的唯一方法是使用仪表板添加静态参数。此外,我什至在 params 字典中得到了我已经从仪表板中删除的旧参数,但没有 URL 查询参数的迹象。

有人知道我做错了什么吗?

谢谢

编辑: 这个答案已经过时了。请参阅 以了解确定为问题的实际原因。


Alex 来自 Branch.io 这里:

您描述的不是预期的功能,我最终可以验证这在测试应用程序配置中无法正常工作。我会将这个错误传递给我们的工程师!

与此同时,将查询参数附加到 live 关键链接似乎仍然按预期工作。所以如果你这样做 https://bnpo.app.link/identifier?foo=barfoo:bar 就会通过。

抱歉给您带来不便!

我们有一个更新和一个可能的原因,结果比预期的要有趣得多!

TL;DR: 传递 link 数据作为查询字符串参数适用于 app.link test-app.link。这些症状背后的真正原因是其他原因,但普通用户永远不会遇到。

症状

Link 附加 到现有分支 link 的参数(例如:https://bnpo.app.link/identifier?foo=bar)不能可靠地显示在应用程序中。

原因

事实证明,在某些时候,Apple 更改了移动版 Safari 的行为,因此当您输入也在您的历史记录 中的 URL 时,Safari 实际上在您键入时预加载页面。对于 Branch 服务器,这看起来与常规访问完全相同,因此我们为其中的每一个创建设备指纹 'visits'。您实际上可以通过转到 Branch 仪表板上的 Link Clicks 页面,在 Safari 中输入您之前访问过的 Branch 的 URL 来查看实际效果 地址栏,然后看着所有link 'clicks'滚进来。

问题是 Branch SDK 按从旧到新的顺序使用设备指纹。如果您之前在测试时访问过 https://bnpo.app.link/identifier,然后使用附加的查询参数 (https://bnpo.app.link/identifier?foo=bar) 重新输入 URL,则 Safari 已经加载 https://bnpo.app.link/identifier,您甚至还没有有机会输入 ?foo=bar.

这意味着您的设备现在有两个不同的指纹:

  1. https://bnpo.app.link/identifier
  2. 一个
  3. 另一个 https://bnpo.app.link/identifier?foo=bar

即使您按 Go 触发应用程序的启动 URL https://bnpo.app.link/identifier?foo=barhttps://bnpo.app.link/identifier 的指纹已经存在, 并且首先在应用程序中使用,因为它较旧(一两秒,具体取决于您键入的速度)。

如果您随后退出该应用程序并立即再次启动它,您将获得带有额外参数的下一个指纹。

解决方案

这种情况在测试期间很容易出现,但实际用户几乎永远不会遇到。它仅在手动输入已访问过的 URL,然后向其附加其他查询参数时发生。

出于测试目的,只需重复重新启动您的应用程序,直到您在启动期间从 Branch init() 调用中得不到任何数据 (+clicked_branch_link: 0)(以耗尽所有未完成的指纹),然后再进行任一操作。 ..

  1. 使用 Notes 完整地输入 URL 并将其粘贴到 Safari
  2. 只需从 Notes
  3. 中打开 URL

我们将在我们的文档中添加一条总结上述内容的警示说明。感谢您提请我们注意!