#swift #firebase-authentication #swiftui
# #swift #firebase-аутентификация #swiftui
Вопрос:
Мне нужно зарегистрировать моего пользователя как с помощью аутентификации по телефону, так и с помощью аутентификации по электронной почте. Я успешно выполнил оба. Однако, учитывая то, как я структурировал свой код, это немного ненадежно.
После того, как пользователь регистрируется со своим номером телефона, он автоматически входит в систему. Но прежде чем они получат доступ к приложению, мне нужно, чтобы они также зарегистрировались по своей электронной почте, но я не могу этого сделать, пока они не войдут в систему со своего телефона.
Group {
if (self.session.session != nil) {
if user?.metadata.creationDate != user?.metadata.lastSignInDate {
AppView()
} else {
EmailRegisterView()
}
} else {
OnBoardingView()
}
}.onAppear(perform: {
session.listen()
})
С помощью имеющегося у меня кода, если пользователь по какой-либо причине выйдет из своей учетной записи в тот же день, когда он ее создал, он снова попадет в EmailRegisterView(), что вызовет проблемы.
Есть ли другой способ перенаправить пользователей на EmailRegisterView(), только если они новые пользователи, и как только они закончат там, отправьте их в AppView()?
Вот мой код для аутентификации по телефону…
func phoneRegister () {
let credential = PhoneAuthProvider.provider().credential(withVerificationID: self.verificationCode, verificationCode: self.code)
Auth.auth().signIn(with: credential) { (result, error) in
if error != nil{
self.alertMessage = (error?.localizedDescription)!
self.alert.toggle()
return
}
UserDefaults.standard.set(true, forKey: "status")
NotificationCenter.default.post(name: NSNotification.Name("statusChange"), object: nil)
}
}
Комментарии:
1. Вы начинаете с открытой фигурной скобки и заканчиваете закрытой круглой скобкой?
2. @ElTomato не могли бы вы уточнить
3. Упс. Моя ошибка… Мои извинения…
Ответ №1:
Похоже, вы можете добавить ключ к пользовательскому умолчанию и проверять значение каждый раз, когда пользователь открывает приложение. Если bool-ключ userdefault, скажем, IsUserRegistered, не существует или имеет значение false, то вы переходите на страницу входа / страницу регистрации и устанавливаете ключ в true. В противном случае, если для ключа установлено значение true, вы просто отобразите начальный вид.