获取swiftUI中当前登录的用户Firebase



我想在登录成功后切换到一个新的视图,它会保存登录状态,当我关闭App再次打开时,不需要再次登录。我用联合收割机。希望你能帮助我。由于

这是我的完整代码。希望你能帮助我

Firebase会告诉你…你只要问就行了。你应该这样问。

let user = Auth.auth().currentUser
if let user = user {
// User is logged in
}

这些是FirebaseAuth iOS文档(了解更多信息)

你应该在LoginViewModel的init中调用这个

init() {
let user = Auth.auth().currentUser
if let user = user {
// User is logged in
session = User(uid: user.uid,
email: user.email)
} else {
session = nil
}
}

使LoginViewModel变量session@Published像这样

class LoginViewModel: ObservableObject {
...
@Published var session: User?
...
}

阅读Published类型在这里

<标题>

更新你应该把这个块添加到LoginViewsignIn()函数中,而不是添加到session.isLoggedIn.toggle()中。

我还建议删除isLoggedin变量,您应该查看session中的user对象,以检查它是否为nil。

func signIn () {
loading = true
error = false
session.signIn(email: email, password: password) { (result, error) in
self.loading = false
if error != nil {
self.error = true
self.loading = false
} else {
guard let uid = result?.user.uid,
let email = result?.user.email else {
return
}
session.session = User(uid: uid, email: email)
}
}
}

这是我添加的signUp()。虽然我建议把它放在一个单独的页面上。

func signUp (email: String,
password: String,
handler: @escaping AuthDataResultCallback) {
Auth.auth().createUser(withEmail: email, password: password, completion: handler)
}

最后,我建议将所有登录逻辑移动到viewModel中,而不是视图中…这就是viewModels存在的原因。