die*_*yas 5 deep-linking ios branch.io
我试图让它成为用户点击表单中的Branch.io链接
https://a.test-app.link/identifier?foo=bar
,然后被重定向到AppStore下载应用程序.然后应用程序应该能够foo在启动期间获取参数.
为了调试这个,我遵循了这个过程:
启动应用程序并在启动期间读取参数
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令牌.
根据我的理解,我现在应该foo在params字典中获取我的参数,但这不会发生.获取参数的唯一方法是使用仪表板添加静态参数.此外,我甚至在params字典中获取了我已从仪表板中删除的旧参数,但没有URL查询参数的迹象.
有没有人知道我做错了什么?
谢谢
我们有一个更新和可能的原因,这最终比预期更有趣!
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.
这意味着您的设备现在有两种不同的指纹:
https://bnpo.app.link/identifierhttps://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()调用中获取数据()(以消耗任何未完成的指纹),然后......
我们将在文档中添加一条总结上述内容的警示说明.感谢您引起我们的注意!
| 归档时间: |
|
| 查看次数: |
2479 次 |
| 最近记录: |