swift - 了解 addStateDidChangeListener firebase 身份验证
问题描述
嗨,我是 firebase 新手,想确认我对 auth 函数的理解。(addStateDidChangeListener)
一点背景:
首次启动应用程序时,首先调用应用程序委托,然后调用此场景委托函数。现在它将根据用户是否登录显示一个屏幕。如果他们没有注册,它将向他们展示我的登录/注册屏幕 (self.createHandleSignInOrSignUp())。
现在2个问题:
在他们注册或登录后,应用程序会跳回这段代码里面
.addStateDidChangeListener
。这是因为身份验证状态发生了变化,对吧?
此外,当应用程序运行时,您可以退出,然后调用此代码块。
这是因为此功能在应用程序运行时始终“侦听”身份验证状态更改?
下面的代码是我的 SceneDelegate.swift 文件的一部分,也是我有疑问的函数。
谢谢
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(frame: windowScene.coordinateSpace.bounds)
window?.windowScene = windowScene
handle = Auth.auth().addStateDidChangeListener({ auth, user in
if (user != nil) {
self.window!.rootViewController = self.createTabBar()
}
else {
self.window!.rootViewController = self.createHandleSignInOrSignUp()
}
})
window?.makeKeyAndVisible()
}
解决方案
每次身份验证状态更改时,都会调用身份验证状态更改侦听器的完成处理程序。这通常是异步发生的,例如当用户登录或注销时。
身份验证状态侦听器保持活动状态,直到您将其删除或应用退出。
推荐阅读
- .net - .NET Core Process.Start 报告默认的 contextIsolation 已弃用。为什么我会收到此警告?
- typescript - VSCode 没有显示内联打字稿错误
- r - 如何在不使用 strsplit 的情况下反转 R 中字符串中的单词?
- django - 通过视图从一个模型到第二个模型获取图像并在枕头中复制并保存到新路径,如何在 html 中获取新路径 img 和旧路径 img
- batch-file - 拖放ffmpeg批处理文件
- c# - 正则表达式查找字符串的最后一个字符
- android-studio - 为什么我的应用程序没有安装在 android studio 中?
- r - 已安装插入符号但仍缺少 R 中的 createDataPartition 函数
- python-3.x - 以下哪个装饰器用于在使用鼻子时将用户定义的设置和拆卸功能分配给测试功能?
- twitter-share - Twitter分享按钮未显示