Firebase连接管理器应仅返回一个结果

时间:2016-05-13 19:44:53

标签: ios swift 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侦听器仅返回正确的响应一次?

1 个答案:

答案 0 :(得分:0)

作为建议,您可能需要添加一些其他功能;

如果您想了解用户与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
})