2017-06-02 111 views
0

测试使用案例:火力认证监听器和网络连接

我的方案,我初始化我的应用程序在Xcode,登录到火力和运行我的应用程序 成功。然后我在Xcode中停止调试器,然后在我的MAC上登录 “关闭Wifi”。然后我再次在Xcode中初始化我的App。

在调试器中,我看到我的代码初始化一个身份验证侦听器,并基于之前缓存的经过身份验证的用户信息的值进行初始化。

我还在控制台日志中看到以下异常。

2017-06-02 09:29:21.281 MusicPoll [7053] [Firebase/Core] [I-NET901017]遇到网络错误。代码,错误:-1009,错误域= NSURLErrorDomain代码= -1009“Internet连接似乎处于脱机状态。”的UserInfo = {NSUnderlyingError = 0x60800005f7d0 {错误域= kCFErrorDomainCFNetwork代码= -1009 “(空)” 的UserInfo = {_ kCFStreamErrorCodeKey = 50,_kCFStreamErrorDomainKey = 1}},NSErrorFailingURLStringKey = https://play.googleapis.com/log,NSErrorFailingURLKey = https://play.googleapis.com/log,_kCFStreamErrorDomainKey = 1,_kCFStreamErrorCodeKey = 50,NSLocalizedDescription =因特网连接似乎不在线。}

由于我没有连接到网络,我想检测此 条件,并要求用户检查他/她的网络连接并重试。

我的问题是我应该使用哪种Firebase方法来检查网络连接并可能获取错误。 (我无法找到可能在听者的回调被 返回错误代码。)

我的代码:

...

fileprivate VAR authListener:FIRAuthStateDidChangeListenerHandle!

FUIAuth.defaultAuthUI()?提供商= [FUIGoogleAuth()]

authListener = FIRAuth.auth()?addStateDidChangeListener {[弱自](AUTH:FIRAuth,用户:FIRUser)在

 guard let strongSelf = self else { return } 

     if let activeUser = user { 

      strongSelf.hasUserBeenAuthenticated = true 
      strongSelf.user = activeUser 

     } else { 

      strongSelf.hasUserBeenAuthenticated = false 
      strongSelf.user = nil 
     } 

     print("\nFirebaseMgr[setupAuthorization]: hasUserBeenAuthenticated = \(strongSelf.hasUserBeenAuthenticated), user = \(String(describing: strongSelf.user))") 
    } 

回答

0

您可以使用Firebase的FIRDatabase.database()。reference(withPath:“.info/connected”)方法检查用户互联网连接的状态。此方法将观察网络连接的任何更改。这里是一个例子:

//this is a strong reference to the internet connection handle 
    var internetConnectionHandle: UInt! 


    //I have created the observer for internet connectivity in viewWillAppear 
    override func viewWillAppear(_ animated:Bool) { 
     let connectedRef = FIRDatabase.database().reference(withPath: ".info/connected") 

    internetConnectionHandle = connectedRef.observe(.value, with: { snapshot in 

     if let _ = snapshot.value as? Bool { 

      //use is connected to the internet. 


     } 
     else { 

      //user is not connected to the internet. Ask the user to check his/her network connection and try again 
     } 
    }) 
+0

谢谢你的留言。我能够进行您描述的网络连接检查。 –