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

时间:2016-05-18 22:10:08

标签: ios deep-linking branch.io

我正在努力让用户点击表单中的Branch.io链接 https://a.test-app.link/identifier?foo=bar 然后被重定向到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)
        }
    })
    
  5. 我还在info.plist文件中设置了正确的API令牌。

    根据我的理解,我现在应该在foo字典中获取params参数,但这不会发生。获取参数的唯一方法是使用仪表板添加静态参数。此外,我甚至在我已从仪表板中删除的params字典中获取旧参数,但没有URL查询参数的迹象。

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

    由于

2 个答案:

答案 0 :(得分:6)

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

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

症状

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

原因

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

问题是Branch SDK依次从最旧到最新消耗设备指纹。如果您之前在测试时访问了https://bnpo.app.link/identifier,然后使用附加的查询参数(https://bnpo.app.link/identifier?foo=bar)重新输入该网址,那么在您有机会输入之前,Safari已经加载了https://bnpo.app.link/identifier?foo=bar

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

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

    即使您按开始触发使用网址https://bnpo.app.link/identifier?foo=bar启动应用,https://bnpo.app.link/identifier的指纹已经存在,并且已在应用中首先使用,因为它是一个较旧的(一两秒钟,取决于你输入的速度)。

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

    解决方案

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

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

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

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

答案 1 :(得分:2)

编辑:此答案已过期。请参阅this answer了解确定问题的真正原因。

来自Branch.io的Alex:

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

与此同时,似乎将查询参数附加到 live 键链接仍然可以正常工作。因此,如果您执行https://bnpo.app.link/identifier?foo=barfoo:bar将会通过。

很抱歉给您带来不便!