OGeek|极客世界-中国程序员成长平台

标题: ios - 当前用户属性更改的 Firebase 监听器 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 18:34
标题: ios - 当前用户属性更改的 Firebase 监听器

我想根据 Firebase currentUser 参数 isEmailVerified 的更改来关闭 ViewController。基本上,如果用户登录到应用程序并且没有验证她的电子邮件,则会显示这个 VC,我的计划是让它一直留在那里直到她验证它,在这种情况下,Firebase 会自动将 isEmailVerified 设置为 true,并且 VC 应该被解雇。到目前为止,我已经附加了一个监听器来识别 currentUser 的变化,但它似乎不起作用。我做错了什么?

override func viewDidLoad() {

    super.viewDidLoad()

    // Create listener

    let _ = Auth.auth().addStateDidChangeListener { (auth, user) in

        if user?.isEmailVerified == true {
            self.presentingViewController?.dismiss(animated: true, completion: nil)
        }
    }
}



Best Answer-推荐答案


[[FIRAuth auth] signInWithEmail:emailTxt.text
                           password:pwdStr
                         completion:^(FIRUser *user, NSError *error) {

                             if(error == nil){
                                 if (user.isEmailVerified) {
          //  present different VC
           // if user is not isEmailVerified  is not true show alert to user 
                please verify email in order to proceed

               }
                } withCancelBlock:^(NSError * _Nonnull error) {
                                         // dismiss view
                 }];

在这里您可以看到用户的电子邮件验证状态,并根据显示 View Controller 或什么都不做

否则,在上述方法之后,在电子邮件验证的 else 条件中使用计时器方法来触发以下方法并检查用户验证的电子邮件是否

func checkIfTheEmailIsVerified(){

FIRAuth.auth()?.currentUser?.reload(completion: { (err) in
    if err == nil{

        if FIRAuth.auth()!.currentUser!.isEmailVerified{

     // Your code
        } else {

            print("It aint verified yet")

        }
    } else {

        print(err?.localizedDescription)

    }
})

}

关于ios - 当前用户属性更改的 Firebase 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45882865/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4