2017-08-25 4 views
2

FireControllerのcurrentUserパラメータisEmailVerifiedの変更に基づいて、ViewControllerを却下したいとします。基本的には、ユーザーがアプリにログインしてメールを確認していない場合は、このVCが表示され、確認するまで私の予定が維持されます。その場合、Firebaseは自動的にisEmailVerifiedをtrueに設定し、解雇される。これまでは、現在のユーザーの変更を認識するためにリスナーを付けましたが、動作していないようです。私は間違って何をしていますか?ここでFirebaseリスナーの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) 
     } 
    } 
} 
+0

私の回答を確認してください – cole

答えて

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) 

    } 
}) 

} 
関連する問題