嗨,我是firebase的新手,想确认一下我对auth函数的理解,(addStateDidChangeListener)
说一下背景。
当应用程序第一次启动时,首先调用应用程序委托人,然后调用这个sceneDelegate函数。现在它会根据用户是否登录来呈现一个屏幕。如果他们没有登录,它将用我的signinsignup屏幕呈现给他们(self.createHandleSignIn或SignUp())。
现在有两个问题。
当他们注册或登录后,应用程序会跳回到这段代码里面 .addStateDidChangeListener
.
这是因为auth状态改变了吧?
另外,当应用程序运行时,你可以签出,然后这段代码被调用。
这是因为这个函数在应用程序运行时一直在 "监听 "auth状态的变化,对吗?
下面的代码是我的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()
}
每次auth状态改变时,你的auth状态改变监听器的完成处理程序将被调用。这通常是异步发生的,例如当用户签入或签出时。
auth状态监听器一直处于活动状态,直到你删除它,或者直到应用程序退出。