首页 > 解决方案 > 了解 addStateDidChangeListener firebase 身份验证

问题描述

嗨,我是 firebase 新手,想确认我对 auth 函数的理解。(addStateDidChangeListener)

一点背景:

首次启动应用程序时,首先调用应用程序委托,然后调用此场景委托函数。现在它将根据用户是否登录显示一个屏幕。如果他们没有注册,它将向他们展示我的登录/注册屏幕 (self.createHandleSignInOrSignUp())。

现在2个问题:

  1. 在他们注册或登录后,应用程序会跳回这段代码里面.addStateDidChangeListener

    这是因为身份验证状态发生了变化,对吧?

  2. 此外,当应用程序运行时,您可以退出,然后调用此代码块。

    这是因为此功能在应用程序运行时始终“侦听”身份验证状态更改?

下面的代码是我的 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()
}

标签: swiftfirebase-authentication

解决方案


  1. 每次身份验证状态更改时,都会调用身份验证状态更改侦听器的完成处理程序。这通常是异步发生的,例如当用户登录或注销时。

  2. 身份验证状态侦听器保持活动状态,直到您将其删除或应用退出。


推荐阅读