Firebase iOS 实现似乎不支持客户端模型的离线缓存。这在实践中意味着:
- 对于需要身份验证的 Firebase 应用,您需要先进行身份验证并等待 Firebase 完成登录(检查用户身份、打开套接字等),然后才能开始移动数据。这将需要 1-8 秒(通常为 2-5 秒),具体取决于网络状况,至少在芬兰是这样。
- 身份验证后,Firebase 首先下载初始数据集并初始化客户端缓存。执行此操作的时间取决于您为其添加侦听器的数据大小,但通常很快。
这里的问题是,如果您使用 Firebase 来实现,例如消息应用程序,您很可能希望在与后端服务器的实际连接之前向用户显示消息线程和消息的先前缓存版本已确立的。
我假设正确的实现需要处理:
- 客户端模型 <-> Firebase JSON 映射(我为此使用 Mantle)
- 将客户端模型持久化到磁盘(使用 NSKeyedArchiver 或 Core Data 等手动实现?)
- 当连接可用时,将磁盘模型与内存中的 Firebase 链接模型同步(手动实现?)
有没有人提出解决方案(自己的或第 3 方)来实现 2)和 3)?