let connectedRef = Database.database().reference(withPath: ".info/connected")
connectedRef.observe(.value, with: { snapshot in
if snapshot.value as? Bool ?? false {
print("Connected")
} else {
print("Not connected")
}
})
我用它来检测我与 Firebase 的连接状态。我的问题是,当他们是互联网连接时,结果变为“未连接”,然后变为“已连接”。当他们没有互联网连接时,它会直接进入“未连接”。有人可以解释一下吗?
最佳答案
您所看到的是预期的行为。
.info/connected
标志确定应用/客户端是否连接到 Firebase 数据库后端。虽然这当然需要您有互联网连接,但还不止于此。这就是为什么即使您有有效的互联网连接,.info/connected
也可能为 false
。
当您启动应用程序时尤其如此。应用启动后,Firebase 客户端需要一段时间才能连接到其数据库服务器,因此 .info/connected
值通常以 false
开头,然后变为 真实
。有时它甚至会在稳定之前切换几次。
另请参阅:
关于ios - 检测连接状态被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51187874/