2016-09-20 58 views
13

我有一个应用程序,其中的主要功能是“离线使用”。Firebase离线存储高级 - 手动同步和进度信息

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

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

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

但我有一些想法:

  • 我可以下载离线使用的全部火力地堡数据库(而不是在一个App-缓存,在持久性存储)?
  • 我可以跟踪脱机同步的进度,并为用户提供选项,如果他想现在或以后同步吗?
  • 我可以只限制同步到WIFI吗?
  • 我可以提供捆绑数据库 - 安装应用程序后,我已经可以查询离线的Firebase数据了吗?

我要的是:在我的应用程序中使用火力地堡只同步的数据库 - 但执行所有操作下线。如果Firebase不是为了使用此功能而设计的,那么有什么好的选择?

然后我有另一个主要问题就火力地堡:

  • JSON存储是伟大的 - 但这样一来,我们不关心独特的结构,一定要在这个注意力始终插入正确的数据集?

回答

4

我可以下载离线使用的全部火力地堡数据库(而不是在 一个App-缓存,在持久性存储)?

是的,您可以通过将磁盘持久性设置为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数据库中的数据。 How do I cache Firebase data for offline usage?

+0

感谢您的回答!你是否也知道关于数据结构的最后一个问题,如果我下载整个数据库并且如果我能够检测到数据库是否与在线版本不同,那么可以为我提供更多关于下载的详细信息。 – brokedid

+0

有什么消息吗?还是一样,还是现在我们可以做得更好? – brokedid