gpt4 book ai didi

ios - 为什么 Firebase Auth Signin 和登录 segue 被调用两次

转载 作者:行者123 更新时间:2023-11-28 05:36:14 24 4
gpt4 key购买 nike

我正在使用 Firebase Auth 登录我的应用程序,然后启动到主屏幕的 segue。出于某种原因,当登录时,Segue 似乎发生了两次,而当用户已经登录时,segue 按预期发生了一次。我不确定问题出在哪里,这是登录代码:

func login() {
Auth.auth().signIn(withEmail: emailInput.text!, password: passwordInput.text!) { (user, error) in
if let user = user {
print("User is signed in.")
let verified = Auth.auth().currentUser?.isEmailVerified
if verified == true {
self.ref = Database.database().reference()

CurrentUser.shared.getCurrentUserInfo()
self.userName = CurrentUser.shared.username

print("loginSegue")
self.performSegue(withIdentifier: "loginToHome", sender: nil)
print("loginSegue2")

} else ...

在控制台上,loginSegue 打印仅显示一次,而在应用程序中它似乎发生两次,就像在这个 gif 中一样:

Segue occurring twice

我不认为这是 Home View Controller 中的问题,因为当用户已经登录并且应用程序从初始 View Controller 启动 segue 时,它​​不会发生,这里是自动登录代码,它似乎工作正常:

 override func viewWillAppear(_ animated: Bool) {
Auth.auth().addStateDidChangeListener { auth, user in
if let user = user {
print("User is signed in.")
let verified = Auth.auth().currentUser?.isEmailVerified
let user_id = Auth.auth().currentUser?.uid
if verified == true {
self.ref = Database.database().reference()

let usersReference = self.ref.child("users").child(user_id!)

usersReference.observeSingleEvent(of: .value, with: { (snapshot) in
// Get user value
let value = snapshot.value as? NSDictionary
let name = value?["username"] as? String ?? ""
self.userName = name
self.performSegue(withIdentifier: "alreadyLoggedIn", sender: nil)

})
} else {

}
} else {
print("User is signed out. (StartViewController)")
}
}
}

为什么这会正常工作,但登录转场似乎发生了两次?

最佳答案

像这样

Auth.auth().addStateDidChangeListener { auth, user in

当登录验证发生时触发,并从这部分引起 segue

usersReference.observeSingleEvent(of: .value, with: { (snapshot) in
// Get user value
let value = snapshot.value as? NSDictionary
let name = value?["username"] as? String ?? ""
self.userName = name
self.performSegue(withIdentifier: "alreadyLoggedIn", sender: nil)
})

关于ios - 为什么 Firebase Auth Signin 和登录 segue 被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58561710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com