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

我试图让它成为用户点击https://a.test-app.link/identifier?foo=barforms的Branch.io链接,然后重定向到AppStore下载应用程序。 然后应用程序应该能够在启动期间获取foo参数。

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

  1. 在测试环境下创建链接。
  2. 点按设备上的链接。
  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查询参数的迹象。

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

谢谢

我们有一个更新和可能的原因,这最终比预期更有趣!

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

症状

附加到现有分支链接的链接参数(例如: https : //bnpo.app.link/identifier?foo = bar )无法可靠地显示在应用内。

原因

事实certificate,在某些时候,Apple改变了移动Safari的行为,因此当您输入历史记录中的URL时,Safari实际上会在您键入时预加载页面。 对于分支服务器,这看起来与常规访问完全相同,因此我们为这些“访问”中的每一个创建设备指纹。 您可以通过转到分支仪表板上的链接点击页面,输入您之前访问过 Safari地址栏的分支的URL,然后观看所有链接“点击”滚动来实际看到这一点。

问题是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. 另一个用于https://bnpo.app.link/identifier?foo=bar

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

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

这种情况在测试期间相当容易出现,但现实生活中的用户几乎永远不会遇到。 只有在手动键入已访问过的URL,然后向其附加其他查询参数时才会出现此问题。

出于测试目的,只需重复启动您的应用程序,直到在启动期间从Branch init()调用中没有数据( +clicked_branch_link: 0 )(用完任何未完成的指纹),然后……

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

我们将在文档中添加一条警告性说明,总结上述内容。 感谢您引起我们的注意!

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


来自Branch.io的Alex在这里:

你所描述的不是预期的function,我可以在我的最终validation这在Test App配置中无法正常工作。 我会把这个bug传给我们的工程师!

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

抱歉给你带来不便!