我希望能够在用户意外断开与Firebase的连接后立即执行选择器(可能是因为互联网连接,电池耗尽等)。我相信我遇到的功能就是这样,但我找不到它。提前谢谢。
答案 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
编辑:就个人而言,我认为最好检查一下是否存在连接,而不是是否存在与数据库的连接。