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
参数。
为了调试这个,我遵循了这个过程:
- 在测试环境下创建link
- 点击设备上的link。
- 使用 Xcode 安装应用程序。
启动应用程序并在启动期间使用
读取参数
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=bar,foo: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
.
这意味着您的设备现在有两个不同的指纹:
https://bnpo.app.link/identifier
一个
- 另一个
https://bnpo.app.link/identifier?foo=bar
即使您按 Go 触发应用程序的启动 URL https://bnpo.app.link/identifier?foo=bar
,https://bnpo.app.link/identifier
的指纹已经存在, 并且首先在应用程序中使用,因为它较旧(一两秒,具体取决于您键入的速度)。
如果您随后退出该应用程序并立即再次启动它,您将获得带有额外参数的下一个指纹。
解决方案
这种情况在测试期间很容易出现,但实际用户几乎永远不会遇到。它仅在手动输入已访问过的 URL,然后向其附加其他查询参数时发生。
出于测试目的,只需重复重新启动您的应用程序,直到您在启动期间从 Branch init()
调用中得不到任何数据 (+clicked_branch_link: 0
)(以耗尽所有未完成的指纹),然后再进行任一操作。 ..
- 使用 Notes 完整地输入 URL 并将其粘贴到 Safari
- 只需从 Notes
中打开 URL
我们将在我们的文档中添加一条总结上述内容的警示说明。感谢您提请我们注意!
我正在尝试让用户点击表单中的 Branch.io link
https://a.test-app.link/identifier?foo=bar
然后被重定向到 AppStore 以下载应用程序。然后应用程序应该能够在启动期间获取 foo
参数。
为了调试这个,我遵循了这个过程:
- 在测试环境下创建link
- 点击设备上的link。
- 使用 Xcode 安装应用程序。
启动应用程序并在启动期间使用
读取参数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=bar,foo: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
.
这意味着您的设备现在有两个不同的指纹:
https://bnpo.app.link/identifier
一个
- 另一个
https://bnpo.app.link/identifier?foo=bar
即使您按 Go 触发应用程序的启动 URL https://bnpo.app.link/identifier?foo=bar
,https://bnpo.app.link/identifier
的指纹已经存在, 并且首先在应用程序中使用,因为它较旧(一两秒,具体取决于您键入的速度)。
如果您随后退出该应用程序并立即再次启动它,您将获得带有额外参数的下一个指纹。
解决方案
这种情况在测试期间很容易出现,但实际用户几乎永远不会遇到。它仅在手动输入已访问过的 URL,然后向其附加其他查询参数时发生。
出于测试目的,只需重复重新启动您的应用程序,直到您在启动期间从 Branch init()
调用中得不到任何数据 (+clicked_branch_link: 0
)(以耗尽所有未完成的指纹),然后再进行任一操作。 ..
- 使用 Notes 完整地输入 URL 并将其粘贴到 Safari
- 只需从 Notes 中打开 URL
我们将在我们的文档中添加一条总结上述内容的警示说明。感谢您提请我们注意!