func checkForConnection() {
let connectedRef = FIRDatabase.database().reference(withPath: ".info/connected")
connectedRef.observe(.value, with: { snapshot in
if let connected = snapshot.value as? Bool , connected {
print("Camera View Connected")
self.connectionStatus = 1
self.UpdateConnection()
} else {
print("Camera View Not connected")
self.connectionStatus = 0
Timer.scheduledTimer(timeInterval: TimeInterval(2.0), target: self, selector: #selector(CameraViewController.UpdateConnection), userInfo: nil, repeats: false)
}
})
}
func UpdateConnection() {
let connectionBanner = Banner(title: "Connection Error", subtitle: "Tap to dismiss", image: UIImage(named: "Wi-Fi"), backgroundColor: UIColor(hexString: "#DA4167"))
if connectionStatus == 0 {
print("connection banner shown from camera view")
// What happens when there's no connection
connectionBanner.dismissesOnTap = true
connectionBanner.show(duration: 10)
}
else if connectionStatus == 1 {
connectionBanner.dismiss()
}
}
这里我有一个代码,可以检测应用程序是否与数据库有连接。如果没有,它将显示横幅通知,告知用户他已断开连接。但是在第一次安装时,尽管有连接,它始终显示没有连接。
我理解应用程序需要一段时间才能建立连接,但有没有办法在调用横幅之前实现重试?我已经设置它,即使没有连接,如果connectionState仍然是0,它将在执行横幅之前延迟。
非常感谢!
编辑:
这是我的viewDidLoad:
override func viewDidLoad() {
// for connection
checkForConnection()
}
这里只有一个功能来检查连接。