2

Firebase iOS 实现似乎不支持客户端模型的离线缓存。这在实践中意味着:

  • 对于需要身份验证的 Firebase 应用,您需要先进行身份验证并等待 Firebase 完成登录(检查用户身份、打开套接字等),然后才能开始移动数据。这将需要 1-8 秒(通常为 2-5 秒),具体取决于网络状况,至少在芬兰是这样。
  • 身份验证后,Firebase 首先下载初始数据集并初始化客户端缓存。执行此操作的时间取决于您为其添加侦听器的数据大小,但通常很快。

这里的问题是,如果您使用 Firebase 来实现,例如消息应用程序,您很可能希望在与后端服务器的实际连接之前向用户显示消息线程和消息的先前缓存版本已确立的。

我假设正确的实现需要处理:

  1. 客户端模型 <-> Firebase JSON 映射(我为此使用 Mantle)
  2. 将客户端模型持久化到磁盘(使用 NSKeyedArchiver 或 Core Data 等手动实现?)
  3. 当连接可用时,将磁盘模型与内存中的 Firebase 链接模型同步(手动实现?)

有没有人提出解决方案(自己的或第 3 方)来实现 2)和 3)?

4

3 回答 3

5

自从提出这个问题以来,Firebase 似乎已经解决了这个问题。Firebase 现在有很多关于离线功能的资源,包括磁盘持久性

对我来说,打开持久性就像在我的 AppDelegate 中一样简单:

Firebase.defaultConfig().persistenceEnabled = true

假设您的应用程序至少在 Internet 连接下运行过一次,这应该可以很好地加载最新的本地数据副本。

于 2016-01-19T23:24:15.757 回答
3

此处描述的 iOS 客户端中有此技术的测试版:https ://groups.google.com/forum/#!topic/firebase-talk/0evB8s5ELmw试一试,让小组知道进展如何。

于 2014-06-27T14:59:50.273 回答
0

在 iOS 中使用 Firebase 持久化只需要一行

    FIRDatabase.database().persistenceEnabled = true

可以在 Firebase 文档中找到

于 2016-12-24T17:00:53.130 回答