ios – Firebase连接管理器应该只返回一个结果

我正在关注位于:https://www.firebase.com/docs/ios/guide/offline-capabilities.html#section-connection-state的文档

但是,我的实施和测试:

        connectionCheck.observeEventType(.Value, withBlock: { snapshot in
            let connected = snapshot.value as? Bool
            if connected != nil && connected! {
                print("Connected")
            } else {
                print("Not connected")
            }
        })

Xcode中的输出注意到:

Not connected
Connected

但是,如果我关闭wifi,结果就是:

Not connected

鉴于我希望允许操作发生并在没有连接时呈现给用户,如何确保此Firebase侦听器仅返回一次正确的响应?

最佳答案
作为建议,您可能想要添加一些额外的功能;

如果您想了解用户与Firebase的连接,您应该观察.info / connected路径,如文档中所述.

我使用的设计模式是设置一个名为isConnected的全局app变量,并将Firebase观察者附加到.info / connected路径.

然后在我的应用程序中我需要知道用户是否连接,我将KVO Observer附加到我的全局isConnected var.

当用户断开连接(或连接)时,将调用Firebase观察器,其中设置isConnected = false(或true).

然后,我的应用程序中正在观察isConnected var的任何位置都会收到断开/连接的通知,并可以采取适当的操作.

这是代码

let connectedRef = rootRef.childByAppendingPath(".info/connected")

connectedRef.observeEventType(.Value, withBlock: { snapshot in

  self.isConnected = snapshot.value as! Bool //KVO property

        //this is just so you can see it's being set, remove
        if ( self.isConnected == true ) {
            print("connected")
        } else {
            print("not connected")
        }
        // testing code
})

转载注明原文:ios – Firebase连接管理器应该只返回一个结果 - 代码日志