启用Firestore离线持久化的Ionic 4应用,关闭/后台化后待处理请求的同步问题
Firestore离线持久化在Ionic应用中的行为详解
嘿,刚好对Firestore离线持久化在Ionic里的行为挺熟悉的,给你详细拆解下:
启用离线持久化的Ionic应用关闭时的情况
当你开启了Firestore的离线持久化功能后,关闭应用的瞬间:
- Firestore会自动把当前客户端的本地数据快照、以及所有待处理的写请求(比如新增、修改、删除文档的操作),统统保存到设备的本地存储中(Web环境下用的是IndexedDB)。
- 这些本地存储的内容是完全持久化的——除非用户手动清除应用缓存/数据,或者直接卸载应用,否则哪怕设备重启,这些数据和待处理操作也不会丢失。
切换后台/关闭后重新打开的同步逻辑
针对你提到的Ionic 4 + AngularFire5的场景,当有未完成的待处理请求时:
- 切换到后台:Firestore会暂时暂停网络请求,但待处理的操作依然稳稳存在本地存储里。只要应用回到前台,它会立刻尝试重新连接Firebase服务器,自动把这些待处理操作同步到云端。
- 完全关闭应用:待处理的写请求不会凭空消失,还是会保存在本地。等你重新打开应用后,Firestore初始化完成的第一时间,就会检测到这些待处理操作,一旦网络连接正常(不管是打开应用时就有网,还是之后恢复网络),就会自动把这些操作同步到云端。
- 冲突处理小提示:如果离线期间,你修改的文档在云端已经被其他人修改过,Firestore会触发默认的冲突解决逻辑——通常是用云端的最新版本覆盖本地修改。你也可以通过监听文档快照的
metadata.hasPendingWrites属性,来自定义处理这种冲突场景(这个属性为true时,说明该文档的修改还没同步到云端)。
内容的提问来源于stack exchange,提问作者TuaimiAA
相关产品推荐
相关产品推荐

