Firebase中本地缓存回调和服务器到达回调的区别

Distinguish between local cache callback and server reached callback in Firebase

我在 Android 中使用 Firebase 构建了一个聊天应用程序。当我们使用 Firestore SDK 时,它会在数据写入本地 Firestore 缓存后立即触发任何更新侦听器。由于我在该字段中包含了服务器时间,因此当数据实际到达服务器时将发生第二个触发器,因为服务器时间在那里更新。我有没有办法区分这两个触发器,这样我就可以向用户更新消息已到达服务器(如 WhatsApp)。

如果这绝对不可能,我有两个选择:

  1. 使用自定义云函数发送消息,让监听器只有在数据到达服务器后才会触发。在那之前,我可以显示用户的待处理状态。
  2. 使用在 Firestore 写入该位置时触发的自定义云函数,并设置一个标志,指示数据已到达服务器。

如果让我选择,哪个更好?

您可以通过检查其metadata.[=13=中的isFromCache()hasPendingWrites()方法来确定快照是否保证与服务器up-to-date ]