在viewDidDisappear上删除Firebase authState

Jam*_*e22 4 ios firebase swift firebase-authentication

我正在使用Firebase的新框架,我试图分别在Login和Signup VC上监控用户的登录状态.问题是如果登录状态在SignUp视图上发生更改,则也会调用Login视图上的Auth State.我的问题是,如何删除身份验证状态?我在Firebase网站上找到了语法,但考虑到我的auth状态代码,我对于传递什么感到困惑:

FIRAuth.auth()?.addAuthStateDidChangeListener { auth, user in
            if let theUser = user {
                // User is signed in.
                print("LOGGED IN!!!!  :::: \(theUser)")
                self.dismissViewControllerAnimated(true, completion: nil)
            } else {
                // No user is signed in.
                print("Need to login first.")
            }
        }
Run Code Online (Sandbox Code Playgroud)

用于删除身份验证的代码,但不确定要传递的内容.

FIRAuth.auth()?.removeAuthStateDidChangeListener(FIRAuthStateDidChangeListenerHandle) 
Run Code Online (Sandbox Code Playgroud)

说我传入了一个FIRAuthStateDidChangeListenerHandle,但是我如何获得这个,或者我是否以不同的方式重写我的authState代码?

Shu*_*ank 6

只需将auth存储在变量中

self.authListener = FIRAuth.auth()?.addAuthStateDidChangeListener { auth, user in
            if let theUser = user {
                // User is signed in.
                print("LOGGED IN!!!!  :::: \(theUser)")
                self.dismissViewControllerAnimated(true, completion: nil)
            } else {
                // No user is signed in.
                print("Need to login first.")
            }
        }
Run Code Online (Sandbox Code Playgroud)

并在以后删除它

FIRAuth.auth()?.removeAuthStateDidChangeListener(self.authListener) 
Run Code Online (Sandbox Code Playgroud)