ios - Firebase 离线存储高级 - 手动同步和进度信息

标签 ios sqlite firebase firebase-realtime-database

我有一个主要功能是“离线使用”的应用程序。

我们在我们的服务器上生成一个 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/

相关文章:

ios - 在同一引用下将图像保存在 firebase 上是否会删除旧图像?

javascript - 选择 firebase 中另一个表的调用字段

ios - 图像不显示在 Firebase 的表格单元格中

iOS - 我们如何通过促销代码为应用内购买提供折扣?

sql - SQLite查询聚合

android - 将数据库保存到 SD 卡

sqlite - 从 sqlite 表生成插入语句

ios - Swift 支持 WebRTC 吗?

ios - iOS像Homido App一样并排播放同一视频

firebase - 在 Firebase 中编写批处理时,如何添加具有自动生成 ID 的文档引用?