swift firebase держать пользователя в системе - PullRequest
0 голосов
/ 14 января 2019

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

Может ли кто-нибудь помочь мне разобраться с этим? По сути, при повторной загрузке приложения отображается только страница моего профиля.

enter code here


let userDefault = UserDefaults.standard
let launchedBefore = UserDefaults.standard.bool(forKey: "usersignedin")

переопределить func viewDidLoad () { super.viewDidLoad ()

    Auth.auth().signInAndRetrieveData(with: credential) { (result, error) in
        if error == nil {
            self.userDefault.set(true, forKey: "usersignedin")
            self.userDefault.synchronize()
            print(result?.user.email)
        }
}
}

1 Ответ

0 голосов
/ 14 января 2019

Я сталкивался с этой проблемой раньше, и у меня есть точное решение для этого.

Добавьте эти две переменные в верхнюю часть вашего AppDelegate:

let userDefault = UserDefaults.standard
let launchedBefore = UserDefaults.standard.bool(forKey: “usersignedin”)

Они позволяют вам использовать userDefaults, а затем позволяют вам установить ключ с именем 'launchBefore'.

В вашей функции входа в Firebase добавьте:

//You should have the next line for whatever method you're using to authenticate your users using firebase

    Auth.auth().signInAndRetrieveData(with: credential) { (result, error) in
            if error == nil {
                self.userDefault.set(true, forKey: "usersignedin")
                self.userDefault.synchronize()
                print(result?.user.email)

Если при входе в систему нет ошибок, установите для 'usersignedin' bool значение true.

В вашем логине View Controller добавьте это к viewDidAppear:

            if userDefault.bool(forKey: "usersignedin") {
            performSegue(withIdentifier: "Verified", sender: self)
        }

Если пользователь вошел в приложение, перейдите на защищенную страницу.

...