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

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

我们在我们的服务器上生成一个SQLite数据库,我们提供了一个API供下载。 每次数据库发生变化,用户都必须重新下载完整的SQLite数据库(目前是50MB,并且正在增长)。

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

现在Google发布了Firebase,我认为现在是用Firebase系统replaceSQLite系统的好时机。

但是我有一些想法:

  • 我是否可以下载整个Firebase数据库以进行脱机使用(不在应用程序caching中,在持久存储中)?
  • 我可以跟踪离线同步的进度,并给予用户选项,如果他想现在或以后同步?
  • 我可以限制同步到WIFI吗?
  • 我可以提供捆绑数据库 – 安装应用程序后,我已经可以离线查询Firebase数据了吗?

我想要的是 :在我的应用程序中使用Firebase仅用于同步数据库 – 但离线执行所有操作。 如果Firebase不是为了使用它而devise的,那么有什么好的select?

那么我还有一个关于Firebase的主要问题:

  • JSON存储是伟大的 – 但这种方式,我们不关心一个独特的结构,我们必须注意这个插入总是正确的数据集?

我是否可以下载整个Firebase数据库以进行脱机使用(不在应用程序caching中,在持久存储中)?

是的,您可以通过将磁盘持久性设置为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文档中看到这个选项,但是我不相信这会很难实现

我可以提供捆绑数据库 – 安装应用程序后,我已经可以离线查询Firebase数据了吗?

一旦安装了应用程序,您就需要从Firebase获取数据。 您也可以在理论上第一次运行应用程序时尝试写入Firebase数据库而无需任何networking,然后可以在本地使用这些数据,但是您需要小心,因为用户获得networking连接时,可能会覆盖此数据Firebase数据库中的数据。 如何将Firebase数据caching为离线使用?