如果应用程序已经打开,则来自 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

按钮单击以打开新表单,如果已经有活动表单正在运行,则不要打开

如果已经以相同的请求运行,则取消订阅/取消角度4中的现有HTTP / XHR调用

如果已经在 J​​ava 中打开,如何关闭程序

尝试使用 selenium python 脚本登录谷歌

windows schtasks如果没有打开则打开excel,如果没有打开则打开工作表