我有一个主要功能是“离线使用”的应用程序。
我们在我们的服务器上生成一个 SQLite 数据库,我们在 API 上提供下载。每次数据库发生变化时,用户都必须重新下载完整的 SQLite 数据库(目前为 50MB,并且会不断增加)。
我们尝试改进用户只需下载 Difference-SQL 文件的更新方法,但存在一些问题(性能、损坏的数据库等)。
现在 Google 发布了 Firebase,我认为现在是用 Firebase 系统替换 SQLite 系统的好时机。
但我有一些想法:
- 我可以下载整个 Firebase 数据库以供离线使用(不在应用程序缓存中,而是在持久存储中)吗?
- 我能否跟踪离线同步的进度并让用户选择是现在还是稍后同步?
- 我可以将同步限制为仅使用 WIFI 吗?
- 我可以提供一个 Bundle Database - 在安装应用程序后我已经可以查询离线 Firebase 数据了吗?
我想要的是:在我的应用程序中使用 Firebase 仅同步数据库 - 但离线执行所有操作。如果 Firebase 不是为使用它而设计的,那么什么是好的替代方案?
然后我有另一个关于 Firebase 的主要问题:
- JSON 存储很棒 - 但通过这种方式我们不关心独特的结构,我们必须注意这一点以始终插入正确的数据集?
最佳答案
Can I download the entire Firebase Database for Offline Usage (Not in an App-Cache, in a persistent Storage)?
是的,您可以通过将磁盘持久性设置为 true 来做到这一点。您只需要引用数据库中的最高级别,firebase 将返回所有子节点。 https://firebase.google.com/docs/database/android/offline-capabilities
Can I track the Progress of the Offline Sync and give the User the option if he want's to sync now or later?
我从未尝试显示实际进度,但是当您从 firebase 检索数据时,总是会在成功检索数据时调用 onDataChange 方法。 https://firebase.google.com/docs/database/android/retrieve-data#read_data_once
Can I restrict the Sync to WIFI only?
我没有在 Firebase 文档中看到这个选项,但我认为实现起来并不困难
Can I deliver a Bundle Database - that after installing the App I can already query offline-Firebase Data?
您需要在安装应用程序后立即从 Firebase 获取数据。从理论上讲,您也可以在应用程序首次运行时尝试在没有任何网络的情况下写入 Firebase 数据库,然后可以在本地使用此数据,但是您需要小心,因为当用户获得网络连接时,此数据可能会被覆盖Firebase 数据库中的数据。 How do I cache Firebase data for offline usage?
关于ios - Firebase 离线存储高级 - 手动同步和进度信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39602673/