2017-02-01 6 views
0

Я хочу, чтобы иметь возможность выполнять селектор, как только пользователь неожиданно отключится от Firebase (возможно, из-за подключения к интернету, батареи сработали и т. Д.). Я считаю, что натолкнулся на функцию, которая сделала именно это, но я не могу ее найти. Заранее спасибо.Firebase узнает, что пользователь отключился от Firebase

+0

Я не уверен, что вы можете выполнять селекторы на Firebase, поэтому я предполагаю, что вы хотите сделать это на стрижа, несмотря на то, что я не могу понять, как это, если Возможное телефон выключен. Поэтому просто чтобы быть ясным: вы хотите выполнить селектор в своем коде или хотите активировать некоторые действия на firebase? – i6x86

ответ

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

Что вам нужно - это способ обработки ошибок соединения, и это очень специфично в зависимости от архитектуры вашего приложения, но я расскажу, как я это сделал в приложении, которое все еще находится на производстве.

Так что если вы выполните поиск в google, как это сделать, вы обнаружите, что можете использовать Reachability, похоже, что есть некоторое решение с Alamofire, но я использовал этот самый простой способ. Я написал FUNC, который работает аналогично этот код:

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

Edit: Лично я думаю, что лучше, чтобы проверить, есть ли связь вообще, а не если есть подключение к базе данных.

Смежные вопросы