如果缓存过期,Firebase脱机功能应该如何检测?

时间:2017-02-23 18:32:05

标签: ios firebase firebase-realtime-database

我的iOS应用程序使用Google的Firebase作为其后台。

由于我希望我的应用离线工作,我进行了设置:

FIRDatabase.database().persistenceEnabled = true

我的问题是,现在,通过观察我的数据库中的单个事件,我在我的2个测试设备上获得了不同的查询结果。对于每个设备:

  1. 我获得了在开始在2台设备上测试之前创建的数据
  2. 我在我目前正在使用
  3. 的设备上获得了我创建的任何数据
  4. 但我无法获取我在其他设备上创建的任何数据
  5. 因此它就像缓存永远不会失效一样,并且SDK永远不会尝试向服务器发送请求以查看是否发生了某些更新。

    通过调用keepSynced

    ,我找到了一种强制在线提取数据的解决方法
    let myRef = FIRDatabase.database().reference(withPath: "foo/bar")
    myRef.keepSynced(true)
    myRef.observeSingleEvent(
            of: .value,
            with: { (snapshot) in
                myRef.keepSynced(false)
                // Do whatever
            })
    

    阅读Firebase's documentation about offline capabilities,我觉得同步总是基于网络可达性而发生,但似乎你需要手动询问同步,这感觉很尴尬。这是Google的SDK中的错误吗?我在滥用它吗?

0 个答案:

没有答案