テスト使用事例:私のシナリオではfirebase認証リスナーとネットワーク接続
、私は正常に私のアプリ をfirebaseし、実行するためにログインし、Xcodeで私のアプリを初期化します。私はその後、Xcodeでデバッガを停止し、 私のMAC上で "Wifiをオフにする"。私は再びXcodeで自分のアプリケーションを初期化します。
デバッガでは、コードが認証リスナーを初期化し、 が認証されたユーザー情報の以前にキャッシュされた値に基づいて初期化されるのがわかります。
また、コンソールログに次の例外があります。
2017-06-02 09:29:21.281 MusicPoll [7053] [Fire-Base] [I-NET901017] Encounterネットワークエラーです。コード、エラー:-1009、エラードメイン= NSURLErrorDomainコード= -1009 "インターネット接続がオフラインになっているようです。 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))")
}
ありがとうございます。あなたが説明したネットワーク接続チェックを行うことができました。 –