如何使用Swift3检测与Firebase数据库的互联网连接?

Zai*_*afa 5 ios firebase firebase-realtime-database swift3

任何人都可以帮助我使用Swift 3检测与Firebase数据库的互联网连接吗?我正在使用此功能从数据库下载数据.

  func loadData(){


    Ref=FIRDatabase.database().reference()

    Handle = Ref?.child("Posts").queryOrdered(byChild: "Des").queryEqual(toValue: "11").observe(.childAdded ,with: { (snapshot) in

        if  let post = snapshot.value as? [String : AnyObject] {

            let img = Posts()

            img.setValuesForKeys(post)

            self.myarray.append(img)

                self.tableView.reloadData()

        }else {


        }

    })

}
Run Code Online (Sandbox Code Playgroud)

Fra*_*len 17

如果您想检测您的应用是否与Firebase数据库后端有连接,您可以收听/.info/connected.Firebase文档中有关检测连接状态的示例应该可以解决问题:

let connectedRef = FIRDatabase.database().referenceWithPath(".info/connected")
connectedRef.observeEventType(.Value, withBlock: { snapshot in
    if let connected = snapshot.value as? Bool where connected {
        print("Connected")
    } else {
        print("Not connected")
    }
})
Run Code Online (Sandbox Code Playgroud)

Swift 3.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")
    }
})
Run Code Online (Sandbox Code Playgroud)

目标C.

FIRDatabaseReference *connectedRef = [[FIRDatabase database] referenceWithPath:@".info/connected"];
    [connectedRef observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot *snapshot) {
   if([snapshot.value boolValue]) {
    NSLog(@"connected");
  } else {
    NSLog(@"not connected");
  }
}];
Run Code Online (Sandbox Code Playgroud)

  • 如果我在具有100%数据包丢失的配置文件上启用网络链路调节器,则它不起作用,它实际上显示为已连接,而实际上它与firebase没有连接.任何想法如何解决? (3认同)
  • 如果应用程序在没有互联网连接的情况下启动,则响应块似乎不会执行。可能是我使用的 firebase 版本的问题。 (2认同)