如何在一定时间间隔内管理Firestore数据库中文档的脱机更新状态



我创建了一个应用程序,其中使用了Firestore数据库。现在我的任务是,用户可以在一段时间内采取更新文档的行动
我的意思是,如果用户在联机模式下尝试更新,那么就没有问题但是,如果用户设备存在网络连接不良的连接问题,则应在20秒内触发此更新操作以保存在Firestore服务器上。如果用户不能在持续时间内完成,那么最后一个操作应该被推出。我的意思是缓存操作不应该在20秒后被推送

对于脱机模式限制,我已设置setPersistenceEnabled(false(但仍在发送存在网络连接问题的文档更新。

在实时数据库中,有一种方法可以查找设备连接https://firebase.google.com/docs/database/android/offline-capabilities

在Firestore有办法吗
我已尝试禁用/启用网络模式,但这对解决此问题没有帮助
https://cloud.google.com/firestore/docs/manage-data/enable-offline#kotlin+ktxandroid_4

db.disableNetwork
db.enableNetwork

我需要这个功能在安卓

我已经尝试了这个代码来清除我正在进行的请求

val hashMap = HashMap<String, Any>()
hashMap["status"] = "ACCEPTED"
hashMap["time"] = time
app().firestoreDB
.collection("doc")
.document("id")
.update(hashMap)
.addOnSuccessListener {
isStoredOnServer = true
// my action 
}
object : CountDownTimer(20000, 1000) {
override fun onTick(millisUntilFinished: Long) {
if(isStoredOnServer){
this.cancel()
}
}
override fun onFinish() {
if(!isStoredOnServer) {
FirebaseFirestore.getInstance().clearPersistence()
.addOnFailureListener { e -> Log.d("Firestore", "Error persistence writing document $e") }
.addOnSuccessListener { Log.d("Could enable persistence:") }
}
}
}.start()

但如果用户设备存在网络连接不良的连接问题,则应在20秒内触发此更新操作以保存在Firestore服务器上。如果用户不能在一段时间内完成,那么最后一个操作应该被推出,我的意思是缓存操作不应该在20秒后被推送

IMHO,我看不到实现这种机制有任何好处,因为Firestore有自己的离线持久性机制。根据官方文件:

Cloud Firestore支持离线数据持久性。此功能缓存您的应用程序正在使用的Cloud Firestore数据的副本,以便您的应用可以在设备脱机时访问数据。

因此,离线时,您可以继续使用该应用程序。此外,对于Android和iOS,默认情况下会启用离线持久性。使用:

setPersistenceEnabled(false)

这意味着将PersistenceEnabled选项设置为false,这意味着您禁用了整个持久性功能。

在实时数据库中,有一种方法可以找到设备连接

在Cloud Firestore的情况下,同样的规则也适用。

在Firestore有什么办法吗?

只需删除上面的代码行即可保持离线持久性。有关更多信息,请参阅我在以下帖子中的回答:

Firestore离线数据:合并写入,离线持久化的最长时间

相关内容

最新更新