如果应用程序已经打开,则来自 expo-branch 的 Branch.subscribe 不会收到数据
Posted
技术标签:
【中文标题】如果应用程序已经打开,则来自 expo-branch 的 Branch.subscribe 不会收到数据【英文标题】:Branch.subscribe from expo-branch doesn't receive the data if the app is already open 【发布时间】:2021-06-24 20:24:56 【问题描述】:我成功地设置了 Branch.io,并在我订阅组件时成功接收了深度链接数据。为了调试发布包(仅适用于 android,生成:expo build:android -t apk --release-channel test
),我存储接收到的数据并将其传递到文本视图中。
Branch.subscribe(bundle => this.props.AuthStore.testData = JSON.stringify(bundle););
有两种情况,一种有效,一种无效:
(工作中)你没有打开应用程序→你导航到一些笔记(或 gmail)→单击链接→应用程序已打开并且链接中的数据正在 Branch.subscribe 上提取
(不工作)你打开应用程序→你最小化应用程序→你导航到一些笔记(或gmail)→单击链接→应用程序打开但没有收到链接数据并且没有触发branch.subscribe
我缺少一些配置吗?我尝试订阅 AppStateChange (foreground|background) + 我尝试使用 await Branch.getLatestReferringParams() (在这两种情况下都没有成功)
请帮助并感谢您的阅读,希望这对其他人也有帮助。
【问题讨论】:
【参考方案1】:解决方案:使用 react-native 中的 Linking。
当应用打开时,Branch 会获取第一个调用。如果应用程序在后台运行,则链接被不同的通信层中断,并且无法访问 Branch.io。我就是这么理解的,这并不意味着我 100% 正确,这是基于大量的控制台日志、构建和调试。
因此您只需要调用分支链接处理代码。但是在后端,Branch 生成的链接需要在 URL 中包含参数,这样才能成为可行的解决方案,因为在使用 Linking 模块处理链接时,您不会从分支中获取对象包。
【讨论】:
以上是关于如果应用程序已经打开,则来自 expo-branch 的 Branch.subscribe 不会收到数据的主要内容,如果未能解决你的问题,请参考以下文章
如果已经下载则打开PDF,如果没有,请使用下载管理器下载PDF
按钮单击以打开新表单,如果已经有活动表单正在运行,则不要打开