我正在关注位于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侦听器仅返回正确的响应一次?
答案 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
})