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

时间:2016-09-20 19:50:32

标签: ios sqlite firebase firebase-realtime-database

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

我们在服务器上生成SQLite-Database,我们在API上提供下载。每次数据库发生变化时,用户都必须重新下载Complete SQLite-Database(目前为50MB并且及时增长)。

我们尝试改进用户只需下载差异SQL文件的Update-Method,但存在一些问题(性能,损坏的数据库等)。

现在Google发布了Firebase,我认为现在是用Firebase系统替换SQLite-System的好时机。

但我有一些想法:

  • 我是否可以下载整个Firebase数据库以进行离线使用(不在App-Cache中,在持久存储中)?
  • 我是否可以跟踪离线同步的进度,如果他想立即或稍后同步,可以向用户提供选项?
  • 我可以仅限制同步到WIFI吗?
  • 我可以提供捆绑数据库 - 安装应用后我可以查询离线 - Firebase数据吗?

我想要的是:在我的应用中仅使用Firebase同步数据库 - 但是离线执行所有操作。如果Firebase不是为了使用它而设计的,那么有什么好的选择呢?

然后我还有一个关于Firebase的主要问题:

  • JSON存储很棒 - 但是这样我们不关心一个独特的结构,我们必须注意这个以插入总是正确的数据集吗?

1 个答案:

答案 0 :(得分:4)

  

我可以下载整个Firebase数据库以进行离线使用(不在   应用程序缓存,在持久存储中)?

是的,您可以通过将磁盘持久性设置为true来执行此操作。您只需要引用数据库中的最高级别,firebase将返回所有子节点。 https://firebase.google.com/docs/database/android/offline-capabilities

  

我可以跟踪离线同步的进度并向用户提供   选项,如果他想现在或以后同步?

我从未尝试过显示实际进度,但是当您从firebase检索数据时,总是会在成功检索数据时调用onDataChange方法。 https://firebase.google.com/docs/database/android/retrieve-data#read_data_once

  

我可以仅限制同步到WIFI吗?

我在Firebase文档中没有看到此选项,但我认为实施起来并不困难

  

我可以提供捆绑数据库 - 在安装App之后我可以   已经查询离线 - Firebase数据?

安装应用后,您需要立即从Firebase获取数据。理论上,当应用程序首次运行时,您也可以尝试在没有任何网络的情况下写入Firebase数据库,然后这些数据可以在本地使用,但是当用户获得网络连接时,您需要小心,然后此数据可能会覆盖Firebase数据库中的数据。 How do I cache Firebase data for offline usage?