ios - 什么是 AuthStateDidChangeListenerHandle?

标签 ios firebase firebase-authentication

我正在查看 Firebase Auth 的文档,以便让我的 native iOS 应用的身份验证正常工作。我在注销我的应用程序时遇到一些问题(登录的用户仍然存在于 auth() 实例中),并且我遇到了此代码作为我无法注销的可能解决方案,但我不这样做了解适合的目的。

什么是 AuthStateDidChangeListenerHandle?是帮助您在不同 View Controller 之间传递用户还是让用户退出?

Adding a handler

handle = Auth.auth().addStateDidChangeListener { (auth, user) in //... } Removing a handler Auth.auth().removeStateDidChangeListener(处理!)

最佳答案

当您使用 Auth.auth().addStateDidChangeHandler 附加一个处理程序时,只要用户的身份验证状态发生变化,您的完成处理程序就会被调用。

最常见的情况是应用程序启动时。对用户进行身份验证需要 Firebase SDK 调用 Firebase 服务器来验证用户的凭据。这可能需要一些时间,因此不会阻止您的应用程序代码(这会导致糟糕的用户体验),而是允许您的代码继续运行,并且 Firebase 在后台处理此客户端到服务器的调用。然后,当调用完成时,它会使用用户的更新身份验证状态调用您的身份验证状态处理程序。

您始终可以调用 Auth.auth().currentUser 来获取用户的当前身份验证状态。但是,如果您在应用程序启动时执行此操作,对服务器的调用可能尚未完成,并且您将返回 nil,因为没有经过身份验证的用户。这可能正是您想要的(例如:显示身份验证状态),但有时您实际上想要等到身份验证完成(例如:如果您想导航到允许用户输入其凭据的不同屏幕)。在后一种情况下,您需要使用 Auth.auth().addStateDidChangeHandler 等待身份验证完成,以确保您只有在确定状态已启动后才导航到下一个屏幕迄今为止。

关于ios - 什么是 AuthStateDidChangeListenerHandle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58288511/

相关文章:

ios - 我应该避免为新版本更改 iOS 应用程序的 CFBundleName 吗?

ios - 如何阻止 tabbarcontrol 中的 uitableview 与状态栏重叠?

ios - 动态物体之间的 Box2d 碰撞

c# - Firebase 实时数据库 : how can I retrieve 10 records around a specific key after ordered by value?

ios - 使用 IQKeyboardManagers 时 UITextView 的高度增加

swift - 如何检索航路点是否有不同的解决方案?

javascript - 添加具有特定 ID 的文档而不覆盖现有文档

ios - 数据未插入 Swift 3 中 Firebase 中用户 UID 的节点下

ios - 如何在没有电子邮件密码的情况下注册用户

Android 将相机 Intent 图像发送到 Firebase