Firebase侦听器关于currentUser属性的更改

时间:2017-08-25 13:47:23

标签: ios firebase firebase-authentication

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

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)
        }
    }
}

1 个答案:

答案 0 :(得分:0)

[[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
                 }];

在这里,您可以看到状态用户使用电子邮件验证,并依赖于显示视图控制器或不执行任何操作

否则在上述方法之后使用计时器方法在电子邮件验证的其他条件下触发方法并检查用户验证的电子邮件

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)

    }
})

}