ios - 检测连接状态被调用两次

标签 ios swift firebase firebase-realtime-database

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/

相关文章:

node.js - 使用 Nodejs 的 Firebase 电话身份验证

ios - 有什么方法可以更改堆栈 View 中照片的顺序?

XCode 7.3 代码标记错误(在 Swift 中)

ios - 如何将 tableview 单元格附件应用于 tableview 记录

swift - 按钮文本被剪切且未居中

ios - Alamofire 会自动存储 cookie 吗?

android - Firestore/Firebase 无法从文件夹获取图像

firebase - 如何在firebase API 中使用confirmPasswordReset(code, newPassword)?

ios - 如何将输入数据的文本字段传递到 swift 上的 url

iphone - 如何在 iPhone 上实现炫酷的警报/信息叠加?