2017-04-08 188 views
1

我需要幫助使用我的代碼。這裏是鏈接到我的loginviewcontroller的代碼,以及我在互聯網上無法找到的任何地方解釋這一點。我試圖讓用戶第一次登錄時,他們會一直登錄,直到他們退出爲止,這樣用戶就不必每次打開應用程序時都繼續登錄。我試過了鑰匙圈和所有這些,但我無法弄清楚。我錯過了什麼?我擺脫了試圖保存信息的垃圾代碼。自動登錄Firebase用戶

import UIKit 
import Firebase 
import FirebaseStorage 
import FirebaseDatabase 
import FirebaseAuth 

class LoginViewController: UIViewController { 
    @IBOutlet weak var emailField: UITextField! 
    @IBOutlet weak var pwField: UITextField! 

    override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(true) 

     if FIRAuth.auth()?.currentUser == nil { 
      let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Login") as! UsersViewController 
      present(vc, animated: true, completion: nil) 
     } 
    } 

    @IBAction func loginPressed(_ sender: Any) { 
     guard emailField.text != "", pwField.text != "" else {return} 

     FIRAuth.auth()?.signIn(withEmail: emailField.text!, password: pwField.text!, completion: { (user, error) in 
      if let error = error { 
       print(error.localizedDescription) 
      } 

      if user != nil { 
       let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "centralvc") 

       self.present(vc, animated: true, completion: nil) 
      } 
     }) 
    } 
} 

回答

0

從viewWillAppear中移動的一切viewDidAppear

1

首先,如果用戶登錄的主畫面上我建議檢查,並且如果他不顯示登錄視圖控制器。

現在要檢查用戶是否已登錄,我建議您調用Firebase的currentUser方法,而不是使用CoreData或UserDefaults進行檢查,因爲您可能已在設備上登錄,但用戶的UID已更改。我不會深入討論如何實施Firebase的方法,但您可以在這裏看到它們全部: https://firebase.google.com/docs/auth/ios/start