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

die*_*yas 5 deep-linking ios 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)
        }
    })
    
    Run Code Online (Sandbox Code Playgroud)

我还在info.plist文件中设置了正确的API令牌.

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

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

谢谢

Ale*_*uer 6

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

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

症状

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

原因

事实证明,在某些时候,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仍然存在,并且首先在应用程序中消耗,因为它是较旧的(一两秒钟,取决于您键入的速度).

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

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

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

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

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