Сохранить состояние входа в систему для соответствующего пользователя в IOS и Firebase - PullRequest
0 голосов
/ 17 апреля 2019

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

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

    override func viewDidAppear(_ animated: Bool) {
        if Auth.auth().currentUser != nil {
            // User is signed in.
            performSegue(withIdentifier: "studentSegue", sender: self)
        } else {
            // No user is signed in.
            return
        }
    }

Я пытаюсь держать пользователя вошедшим в систему для разных пользователей, но я не уверен, какой код использовать. Чтобы разграничить пользователей на странице входа в систему, я использовал переключатель регистра, чтобы найти пользователя «Тип» и войти в него. Но я хочу, чтобы соответствующий пользователь вошел в систему. Любая помощь будет высоко ценится

РЕДАКТИРОВАТЬ: я пытаюсь сказать, что если два человека на разных телефонах пытаются войти в систему, скажем, ученик (телефон A) и учитель (телефон B), они должны просто войти в систему один раз и не должны входить снова, когда закрывают приложение. Но мой логин "PerformSegue" позволяет мне показывать только "studentSegue"

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

После долгих попыток мне удалось найти ответ самому. Так что я сделал целое число UserDefaults.standard.set(1, forKey: "isLoggedIn") каждый раз, когда пользователь будет входить в систему. Я установил номер 1 для ученика и номер 2 для учителя, и в viewDidAppear я сделал это:

    override func viewDidAppear(_ animated: Bool) {

        if UserDefaults.standard.float(forKey: "isLoggedIn") == 1 {
            self.performSegue(withIdentifier: "studentSegue", sender: self)
        }

        if UserDefaults.standard.float(forKey: "isLoggedIn") == 2 {
            self.performSegue(withIdentifier: "lecturerSegue", sender: self)
        }

        else{
            return
        }

    }
0 голосов
/ 17 апреля 2019

Позвольте мне повторить вопрос

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

Несколько вещей

Firebase не имеет пользовательских типов, только пользователи- для Firebase каждый пользователь такой же, как и любой другой пользователь.Код и структура вашего приложения определяют разницу.

Одно из решений - спросить Firebase, какой он пользователь при запуске приложения.Вот некоторый общий код:

override func viewDidAppear(_ animated: Bool) {
    if Auth.auth().currentUser != nil {
        let uid = currentUser.uid
        let thisUserRef = fbRoot.child("users").child(uid)
        thisUserRef.observeSingleEvent(..... {
           let userType = //get userType from snapshot
           if userType == "student" {
              performSegue(withIdentifier: "studentSegue", sender: self)
           } else {
              performSegue(withIdentifier: "teacherSegue", sender: self)
           }
        }

    } else {
        // No user is signed in.
        return
    }
}

Другой вариант - сохранить userType в userDefaults.Так что, если пользователь является auth'd, получите тип пользователя из значений по умолчанию и выполните соответствующий переход.Я не большой поклонник этого подхода из-за безопасности, но он может сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...