【问题标题】:Firebase Offline Storage Advanced - Manual Sync and Progress InformationFirebase 离线存储高级 - 手动同步和进度信息
【发布时间】:2017-01-28 21:14:00
【问题描述】:

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

我们在我们的服务器上生成一个 SQLite 数据库,我们在 API 上提供的内容供下载。每次数据库更改时,用户都必须重新下载完整的 SQLite 数据库(目前为 50MB,并且会随着时间的推移而增长)。

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

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

但我有一些想法:

  • 我能否下载整个 Firebase 数据库以供离线使用(不在应用缓存中,在持久存储中)?
  • 我可以跟踪离线同步的进度并让用户选择现在或以后同步吗?
  • 我可以将同步限制为仅限 WIFI 吗?
  • 我能否提供一个捆绑数据库 - 安装应用后我已经可以离线查询 Firebase 数据?

我想要的是:在我的应用程序中使用 Firebase 仅用于同步数据库 - 但离线执行所有操作。如果 Firebase 不是为使用此功能而设计的,那么有什么好的替代方案?

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

  • JSON 存储很棒 - 但是这种方式我们不关心唯一的结构,我们必须注意这一点才能插入始终正确的数据集?

【问题讨论】:

    标签: ios sqlite firebase firebase-realtime-database


    【解决方案1】:

    我可以下载整个 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 文档中看到此选项,但我认为实施起来并不困难

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

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

    【讨论】:

    • 感谢您的回答!您是否还知道关于数据结构的最后一个问题?如果我下载了整个数据库以及是否可以检测到数据库是否与在线版本不同,您是否可以向我提供有关查询下载进度的更多详细信息......?跨度>
    • 有消息了吗?还是一样,还是我们现在可以做得更好?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多