【问题标题】:How to handle internet connection status Firebase如何处理互联网连接状态 Firebase
【发布时间】:2017-07-24 22:43:50
【问题描述】:

我想检查设备(在本例中为 IOS 设备)是否可以访问 Firebase 实时数据库。

所以我创建了这个方法:

private func isConnected(completionHandler : @escaping (Bool) -> ()) {
   let connectedRef = Database.database().reference(withPath: ".info/connected")
       connectedRef.observe(.value, with: { snapshot in
            completionHandler((snapshot.value as? Bool)!)
       })
}

这种方法效果很好。我在每一种使用实时数据库的方法中都使用它:

isConnected { (connected) in
    if(connected){
         //do your things
    } else {
       print("network error")
    }                       
}

但是现在我的问题是,如果您遇到网络错误怎么办。您如何知道您的设备是否没有互联网连接或 Firebase 服务已关闭?这样做的好方法是什么?因为我现在唯一知道的是我无法访问实时数据库。

所以我的问题是,我怎样才能获得更详细的信息?设备是否离线?火力下降了吗?等等等等。

【问题讨论】:

  • 使用可达性。
  • 对于 Android 客户端,仅在需要时才存在连接。 documentation 解释说:在 Android 上,Firebase 自动管理连接状态以减少带宽和电池使用量。当客户端没有活动的侦听器,没有挂起的写入或 onDisconnect 操作,并且没有通过 goOffline 方法显式断开连接时,Firebase 会在 60 秒不活动后关闭连接。 我没有使用 iOS 的经验,但会希望它是一样的......
  • 所以当.info/connected返回false时,is可能意味着无法连接,或者a可能意味着不需要连接。

标签: ios swift firebase firebase-realtime-database


【解决方案1】:

Firebase 的 .info/connected 仅表明您的应用是否已连接到其 Firebase 数据库后端。它不检测一般网络连接。

要确定后者,请尝试 [此列表] 中的众多答案之一。包括How to check for an active Internet connection on iOS or OSX?Easiest way to detect Internet connection on iOS?Check for internet connection with Swift

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-24
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    相关资源
    最近更新 更多