2017-07-24 84 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时,可能意味着连接不可能,或者可能意味着不需要连接。 –

回答