Проверка подлинности Xcode Firebase выходит из системы каждый раз после закрытия приложения - PullRequest
0 голосов
/ 11 июля 2020

Итак, я разместил здесь свой код loginviewcontroller. Все работает нормально, но я хотел бы поддерживать сеансы пользователей после закрытия приложения. Причина в том, что пользователю не нужно входить в систему каждый раз, когда он открывает приложение.

import UIKit
import FirebaseAuth

class LoginViewController: UIViewController {

    
    @IBOutlet weak var Email: UITextField!
    @IBOutlet weak var Password: UITextField!
    @IBOutlet weak var segmentlogin: UISegmentedControl!
    @IBOutlet weak var Loiginbutton: UIButton!
    
    @IBAction func ActionLoginButoon(_ sender: UIButton)
    {
       
        if Email.text != "" && Password.text != ""
        {
            if segmentlogin.selectedSegmentIndex == 0 //Login user
            {
                Auth.auth().signIn(withEmail: Email.text!, password: Password.text!) { (user, error) in
                    if user != nil
                    {
                    //Sign in Successful
                        //print("SUCCESS")
                        self.performSegue(withIdentifier: "Segueone", sender: self)
                    }
                    else
                    {
                        if let myError = error?.localizedDescription
                            {
                            print(myError)
                        }
                        else
                        {
                            print("ERROR") //Use Alert on Xcode look up how to
                        }
                    }
                }
            }
        else //sign up user
            {
                Auth.auth().createUser(withEmail: Email.text!, password: Password.text!) { (user, error) in
                if user != nil
                {
                    //Sign in Successful
                    //print("SUCCESS")
                    self.performSegue(withIdentifier: "Segueone", sender: self)
                    }
                else{
                    if let myError = error?.localizedDescription
                    {
                        print(myError)
                    }
                    else
                    {
                        print("ERROR") //Use Alert on Xcode look up how to
                    }
                    }
                }
            }
        }
    }
        
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }
    

    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destination.
        // Pass the selected object to the new view controller.
    }
    */

}
//password can be just ... looking click on password box and secure text entry above control

1 Ответ

1 голос
/ 14 июля 2020

Что делает этот метод, так это то, что сначала у вас есть пустая раскадровка, которая определяет, заполнили ли вы информацию в представлении входа в систему, если вы этого не сделали, это приведет вас к входу в представление. как только вы заполните это, вы go вернетесь к пустой раскадровке, чтобы увидеть, заполнено ли ваше представление входа в систему. если он заполнен, вы перейдете на главный экран. если пользователь удалит приложение и снова загрузит его, ему придется пополнять данные для входа в систему, в противном случае пользователю никогда не придется заполнять его заново. дайте мне знать, если вам нужно знать, как выйти.

Вам нужно будет создать файл viewcontroller, используя в верхнем левом углу File-> New-> File-> Cocoa Touch Class, и сохранить, где будет сохранено ваше приложение . назовите его AppContainerViewController

создайте другой файл, используя в верхнем левом углу File-> New-> File-> Swift File, и сохраните там, где ваше приложение сохранено. назовите его AppManager

создайте новую раскадровку и подключите ее к AppContainerViewController (правая панель под инспектором-> Пользовательский класс-> класс

В AppContainerViewController Введите только этот код

импорт UIKit

class AppContainerViewController: UIViewController {

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    
    AppManager.shared.appContainer = self
    AppManager.shared.showApp()

}
    

    // Do any additional setup after loading the view.
}

В AppManager введите этот код

import UIKit import Firebase

class AppManager {

static let shared = AppManager()

let storyboard = UIStoryboard(name: "Main", bundle: nil)
var appContainer: AppContainerViewController!

private init() { }

func showApp(){

var viewController: UIViewController

if Auth.auth().currentUser == nil {
    viewController = storyboard.instantiateViewController(withIdentifier: "LoginViewController") // login view where you sign in
} else {
    viewController = storyboard.instantiateViewController(withIdentifier: "ViewController") // Homw view
    }
    
    appContainer.present(viewController, animated: true, completion: nil)
}

}

...