场景 1:
- 打开应用程序
- 下线
- 执行调查
- 确保应用程序没有被杀死并上线
- 用户上线后,数据就会推送到 Firebase
场景 2:
- 打开应用程序
- 下线
- 执行调查
- 从后台杀死应用程序
- 打开应用程序并上线,必须将数据推送到Firebase以进行我们离线执行的调查---这是我面临的实际问题,在这种情况下,数据不会被推送到Firebase db。
要使场景 2 正常工作,如果 Firebase 客户端没有连接到服务器(在 Firebase 客户端中称为磁盘持久性(,则必须将数据写入本地磁盘。然后,当应用重新启动时,它会从磁盘读取数据,并可以重试将其发送到服务器。
由于方案 2 不适合您,因此似乎未启用磁盘持久性。您没有告诉我们/向我们展示您正在使用哪个 Firebase 数据库(Firestore 或实时数据库(。但由于磁盘持久性在Firestore上默认启用,因此我假设它是实时数据库。若要了解如何在此处启用磁盘持久性,请参阅 https://invertase.io/oss/react-native-firebase/faqs/enabling-database-persistence
只需执行以下操作:
export const syncOfflineDataToFirestore = async () => {
const docRef = await firebase
.firestore()
.collection('singledoc-per-device')
.doc(`doc_name`)
await docRef.get()
}
在最初启动应用的顶部组件之一中调用上述函数。这将自动将所有记录推送到 firebase。它有点棘手,但工作正常。