如果用户离线执行调查并使用react-native-firebase不上线就终止了应用程序,则数据不会被推送到Firebase中

时间:2019-10-10 09:00:09

标签: android firebase react-native react-native-firebase

场景1:

  1. 打开应用程序
  2. 离线
  3. 进行调查
  4. 确保应用未被杀死并上线
  5. 一旦用户上线,数据就会被推送到Firebase

方案2:

  1. 打开应用程序
  2. 离线
  3. 进行调查
  4. 从后台杀死该应用程序
  5. 打开该应用程序并联机,我们必须将数据脱机发送到firebase以便进行脱机执行的调查---这是我面临的实际问题,在这种情况下,数据没有被推送到firebase db。 / li>

2 个答案:

答案 0 :(得分:0)

要使方案2正常工作,如果与服务器之间没有连接(Firebase客户端中称为磁盘持久性),则Firebase客户端必须将数据写入本地磁盘。然后,当应用重新启动时,它会从磁盘读取数据,然后可以重试将其发送到服务器。

由于方案2不适用于您,因此似乎未启用磁盘持久性。您没有告诉/显示我们正在使用哪个Firebase数据库(Firestore或实时数据库)。但是,由于默认情况下在Firestore上启用了磁盘持久性,因此我将假定它是实时数据库。要了解如何在此处启用磁盘持久性,请参阅https://invertase.io/oss/react-native-firebase/faqs/enabling-database-persistence

答案 1 :(得分:0)

只需执行以下操作:

export const syncOfflineDataToFirestore = async () => {
  const docRef = await firebase
    .firestore()
    .collection('singledoc-per-device')
    .doc(`doc_name`)
  await docRef.get()
}

在最初启动应用的顶级组件之一中调用上述函数,它将自动将所有记录推送到firebase。虽然有点棘手,但效果很好。