2017-08-25 48 views
2

我想根據Firebase currentUser參數isEmailVerified中的更改來關閉ViewController。基本上,如果用戶登錄到應用程序並且未驗證她的電子郵件,則會呈現此VC,並且我的計劃是讓它保持在那裏直到她驗證它,在這種情況下,Firebase會自動將isEmailVerified設置爲true,並且VC應該被解僱。到目前爲止,我已經附加了一個監聽器來識別currentUser中的變化,但似乎並不奏效。我究竟做錯了什麼?關於currentUser屬性更改的Firebase偵聽器

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) 

    } 
}) 

}