Firebase ログインuserのオブザーバー

SwiftでFirebaseLoginしたけど、各Viewに来た時にLoginしているか、そうでないかの判定をするときの実装を説明します。

ポイント

viewWillAppearに実装

addStateDidChangeListener関数を利用

Loginしていない時は、ログイン画面に遷移させる

//その画面が表示される度に呼ばれる関数
    override func viewWillAppear(_ animated: Bool) {

//AuthのaddStateDidChangeListenerを利用する 返却されるuserでログイン判定できる
                handle = Auth.auth().addStateDidChangeListener({ (auth, user) in

//usre== nil つまり、ログインしていないなら
                    if user == nil{

//どのストーリーボードか教えてあげる
                        let storyboard = UIStoryboard(name: "Main", bundle: nil)

                        let loginVC = storyboard.instantiateViewController(withIdentifier: "LoginVC")
                        self.present(loginVC, animated: true)
                    } else {
                        self.setListener()
                    }
                })

Loginは実装が完了しているとして説明します。

firebase.google.com