Firebase会查明用户是否与Firebase

时间:2017-02-01 21:45:52

标签: ios swift firebase firebase-realtime-database

我希望能够在用户意外断开与Firebase的连接后立即执行选择器(可能是因为互联网连接,电池耗尽等)。我相信我遇到的功能就是这样,但我找不到它。提前谢谢。

2 个答案:

答案 0 :(得分:1)

let connectedRef = FIRDatabase.database().reference(withPath: ".info/connected")
        connectedRef.observe(.value, with: { snapshot in
            if let connected = snapshot.value as? Bool, connected {
                print("Connected")
            } else {
                print("Not connected")
            }
        })

答案 1 :(得分:0)

您需要的是一种处理连接错误的方法,这是一个非常具体的方法,具体取决于您的应用程序的体系结构,但我会告诉我如何在仍处于生产阶段的应用程序中执行此操作。

因此,如果您在Google上搜索如何执行此操作,您会发现您可以使用Reachability,似乎Alamofire也有一些解决方案,但我使用了这种最简单的方法。我写了一个类似于这段代码的函数:

func checkInternet() {
    DispatchQueue.main.async {
        let url = URL(string: "https://www.google.com")!
        let request = URLRequest(url: url)

        let task = URLSession.shared.dataTask(with: request) {data, response, error in

            if error != nil {

                print("Internet Connection not Available!")
                self.haveInternetConnection = false
            }
            else if let httpResponse = response as? HTTPURLResponse {
                if httpResponse.statusCode == 200 {
                print("Internet Connection OK")
                }
                print("statusCode: \(httpResponse.statusCode)")
            }

        }
        task.resume()
    }

}

在那里,每次我需要检查是否还有活动连接时我都会使用它。 我也在这里找到了解决方案:https://stackoverflow.com/a/41271535/5843195

编辑:就个人而言,我认为最好检查一下是否存在连接,而不是是否存在与数据库的连接。