如何知道 Firebase DataSnapshot 何时在服务器端持久化

How to know when Firebase DataSnapshot has been persisted server side

我正在使用 Firebase 建立聊天,使用离线功能 (keepSynced(true))

它工作得很好,除了我无法找到一种方法来知道 DataSnapshot 消息是否确实已保存在服务器端,就好像我查询消息 Firebase 会告诉我它存在(它在本地存在!)。

我找到了有关交易的信息,但它没有离线保存。

我也找到了查看Firebase的连接状态,但是是全局状态,并不能一一反映快照状态。

我找到的唯一解决方案是在我反对的消息中添加 属性 "persisted",这个 属性 是由服务器端函数设置的,但这似乎有点过分了.我很确定 Firebase 在本地确实知道哪些值尚未保留?

在 Android 上,当您执行任何写入操作时,您将获得一个 Task object in return, or you may specify a CompletionListener 作为参数。这些中的任何一个都将指示服务器何时接收到数据。如果你不使用这些,你没有其他迹象。

如果您无法坚持使用 Task 或 CompletionListener,使用 Cloud Functions 在写入时标记位置当然是另一种方法。