【问题标题】:How to persist Firebase objects to disk in iOS?如何在 iOS 中将 Firebase 对象持久保存到磁盘?
【发布时间】:2014-08-18 06:49:01
【问题描述】:

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

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

这里的问题是,如果您使用 Firebase 来实现(例如消息传递应用),您很可能希望在与后端服务器已建立。

我认为正确的实现需要处理:

  1. 客户端模型 Firebase JSON 映射(我使用 Mantle 这个)
  2. 将客户端模型保存到磁盘(使用 NSKeyedArchiver 或 Core Data 等手动实现?)
  3. 当连接可用时,将磁盘模型与内存中的 Firebase 链接模型同步(手动实施?)

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

【问题讨论】:

    标签: ios firebase offline offline-caching firebasesimplelogin


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      自从提出这个问题以来,Firebase 似乎已经解决了这个问题。 Offline Capabilities 上有很多资源现在使用 Firebase,包括 disk persistence。

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

      Firebase.defaultConfig().persistenceEnabled = true
      

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

      【讨论】:

      • 对于 Firestore 也是:FirestoreSettings().isPersistenceEnabled = false
      【解决方案3】:

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

          FIRDatabase.database().persistenceEnabled = true
      

      可以找到here in Firebase Docs

      【讨论】:

        猜你喜欢
        • 2016-10-31
        • 2011-04-09
        • 1970-01-01
        • 2010-09-10
        • 2020-10-08
        • 2018-01-21
        • 1970-01-01
        • 2017-03-26
        • 2016-02-26
        相关资源
        最近更新 更多