Вот как пользователи перемещаются по моему приложению:
- Введите номер телефона
- Введите номер подтверждения (это позволяет им получить доступ к моему Firestore)
- Входитимя пользователя
- Теперь они находятся в главном приложении
Довольно просто, однако проблема в том, что если приложение выходит из строя (по какой-либо причине) или закрывается при вводе имени пользователя, онитехнически все еще вошли в мой Firestore.
Это проблема, потому что я запрограммировал приложение так, чтобы, когда пользователь снова открывает приложение, они сразу переходили на главный экран (я создал диспетчер приложений, чтобы справиться с этим).Если они закрывают приложение (или если оно падает) до ввода имени пользователя, они могут перейти прямо на главный экран без имени пользователя.
Я предпринял несколько разных попыток в методе applicationWillTerminate, чтобы отследить, в каком контроллере представления находится пользователь, выйдите из системы, чтобы при повторном открытии приложения мой менеджер приложений сказал Auth.auth ().currentUser == nil и переходит к начальному контроллеру представления для повторного запуска процесса регистрации.
var viewController : UIViewController?
var vc = UsernameViewController()
if viewController == vc {
let firebaseAuth = Auth.auth()
do {
try firebaseAuth.signOut()
} catch let signOutError as NSError {
print ("Error signing out: %@", signOutError)
}
Я ожидаю, что пользователь, у которого не было возможности создать имя пользователя из-за закрытия или сбоя приложения, вернулсяк контроллеру начального вида, а не к главному экрану приложения.
В настоящее время я испытываю противоположное.