2017-02-01 2 views
0

Ich möchte einen Selektor ausführen können, sobald der Benutzer unerwartet von Firebase trennt (möglicherweise wegen Internetverbindung, Akku ist gestorben, usw.). Ich glaube, ich bin auf eine Funktion gestoßen, die genau das getan hat, aber ich kann sie nicht finden. Vielen Dank im Voraus.Firebase finde heraus, ob der Benutzer die Verbindung zum Firebase unterbrochen hat

+0

Ich bin nicht sicher, dass Sie Selektoren auf Firebase durchführen kann, so dass ich gehe davon aus Sie es auf schnellen trotz der Tatsache zu tun, möchte ich kann nicht verstehen, wie es posible ist, wenn das Telefon ausgeschaltet ist. Um es klar zu sagen: Sie möchten einen Selektor für Ihren Code ausführen oder eine Aktion auf dem Firebase auslösen? – i6x86

Antwort

0
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") 
      } 
     }) 
0

Was Sie brauchen, ist ein Weg, um die Verbindungsfehler zu behandeln, und dies ist sehr spezifisch abhängig von der Architektur Ihrer App, aber ich werde erzählen, wie ich es in einer App gemacht habe, die noch in Produktion ist.

Also, wenn Sie auf Google suchen, wie Sie dies tun, werden Sie feststellen, dass Sie Erreichbarkeit verwenden können, es scheint, es gibt auch eine Lösung mit Alamofire, aber ich habe diesen einfachsten Weg verwendet. Ich schrieb einen func, die zu diesem Code ähnlich lautet:

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() 
    } 

} 

Und jedes Mal muss ich prüfen, ob es noch aktive Verbindung ist ich es verwenden. Auch fand ich die Lösung hier: https://stackoverflow.com/a/41271535/5843195

Edit: Persönlich denke ich, besser ist, zu überprüfen, ob eine Verbindung gibt es überhaupt statt, wenn eine Verbindung zur Datenbank ist.

Verwandte Themen