ios - 在 viewDidDisappear 上删除 Firebase authState

标签 ios swift firebase firebase-authentication

我正在使用 Firebase 的新框架,我试图分别在登录和注册 VC 上监控用户的登录状态。问题是如果注册 View 上的登录状态发生变化,登录 View 上的身份验证状态也会被调用。我的问题是,如何删除授权状态?我在 Firebase 网站上找到了语法,但在考虑我的身份验证状态代码时对要传递的内容感到有点困惑:

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.")
            }
        }

用于删除身份验证的代码,但不确定要传入什么。

FIRAuth.auth()?.removeAuthStateDidChangeListener(FIRAuthStateDidChangeListenerHandle) 

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

最佳答案

只需将身份验证存储在一个变量中

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.")
            }
        }

稍后删除

FIRAuth.auth()?.removeAuthStateDidChangeListener(self.authListener) 

关于ios - 在 viewDidDisappear 上删除 Firebase authState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37642091/

相关文章:

iOS6隐藏状态栏

ios - XCode 导出应用程序,通配符错误

swift - 如何检测 App delegate - OSX 中的重启事件?

ios - 选择另一个选项卡时如何更改文本字段的背景颜色?

ios - 将 ActionCodesSettings 与 Auth.sendEmailVerification 结合使用时,Firebase 无法识别关联域

google-chrome-extension - 我可以将 chrome.identity 与 Firebase 自定义身份验证一起使用吗?

ios - 在 SwiftUI 中将图像裁剪为正方形

android - Stack 底部 Widget 的 Flutter 手势检测

ios - 无论如何要在两个 View 之间使用 CATransition 时删除淡入淡出?

ios - 在我的 iOS 应用程序中实现 pod 'Firebase/Firestore' 后无法运行应用程序