2017-07-24 88 views
0

我想檢查一個設備(在本例中是IOS設備)是否有權訪問Firebase實時數據庫。如何處理互聯網連接狀態Firebase

所以我創造了這個方法:

private func isConnected(completionHandler : @escaping (Bool) ->()) { 
    let connectedRef = Database.database().reference(withPath: ".info/connected") 
     connectedRef.observe(.value, with: { snapshot in 
      completionHandler((snapshot.value as? Bool)!) 
     }) 
} 

這種方法正在完善。而且我在我做的東西與實時數據庫中的每個方法,使用這樣的:

isConnected { (connected) in 
    if(connected){ 
     //do your things 
    } else { 
     print("network error") 
    }      
} 

但現在我的問題,如果你得到了什麼網絡錯誤。您如何知道您的設備是否沒有互聯網連接或Firebase服務停用?這樣做的好方法是什麼?因爲我現在唯一知道的是我無法訪問實時數據庫。

所以我的問題是,我怎麼能得到更詳細的信息?設備離線了嗎? Firebase是否已關閉?等等

+1

使用可達性。 –

+0

對於Android客戶端,僅在需要時才存在連接。 [documentation](https://firebase.google.com/docs/database/android/offline-capabilities#section-connection-state)解釋:_On Android上,Firebase自動管理連接狀態以減少帶寬和電池使用量。如果客戶端沒有活動偵聽器,沒有掛起的寫入或onDisconnect操作,並且沒有通過goOffline方法明確斷開連接,則Firebase會在60秒未關閉後關閉連接。我沒有iOS的使用經驗,但希望它能夠是相同的...... –

+2

所以當'.info/connected'返回false時,可能意味着連接不可能,或者可能意味着不需要連接。 –

回答

相關問題