gpt4 book ai didi

ios - 通过 iOS 中的监听器检查 Firebase 当前登录用户

转载 作者:IT王子 更新时间:2023-10-29 05:35:44 24 4
gpt4 key购买 nike

我已实现 Firebase 授权以通过 Facebook 和 Google 登录我的 iOS 应用程序。我正在编写 Swift。当应用程序启动时,我需要检查用户是否已经登录以显示正确的 ViewController(例如,如果没有人登录,我会显示登录 View Controller ,否则我会显示主视图 Controller )。如果我使用 Firebase 提供的“简单”解决方案,这意味着

if FIRAuth.auth()?.currentUser != nil {
// User is signed in.
// ...
} else {
// No user is signed in.
// ...
}

因此检查当前用户是否不为 nil,这正是 Firebase 指南(https://firebase.google.com/docs/auth/ios/manage-users)警报可能发生的意思

“注意:currentUser 也可能为 nil,因为 auth 对象尚未完成初始化。如果您使用监听器来跟踪用户的登录状态,则无需处理这种情况。”

所以我想按照指南中的建议实现监听器:

handle = FIRAuth.auth()?.addStateDidChangeListener() { (auth, user) in
// ...
}

监听器还将处理中间状态,以便在创建 Auth 对象时触发它。重点是我真的无法让它正常工作。任何人都可以帮助我使用这个监听器来检查用户是否登录?

谢谢

最佳答案

我是这样实现的:

FIRAuth.auth()?.addStateDidChangeListener { auth, user in
if let user = user {
// User is signed in. Show home screen
} else {
// No User is signed in. Show user the login screen
}
}

如果检查后不需要User对象,可以用 bool 测试替换if let user = user,像这样:

FIRAuth.auth()?.addStateDidChangeListener { auth, user in
if user != nil {
// User is signed in. Show home screen
} else {
// No User is signed in. Show user the login screen
}
}

监听器放在哪里(来自评论):

对于我用来检查用户是否登录的情况,将其放在特定 View Controller 中的 viewDidLoad 的开头就足够了。但是如果你遇到每次进入特定 View Controller 时都需要检查的情况,那么最好将它放在 viewDidAppear 的开头。但我认为在大多数情况下你只需要检查一次,如果用户进入 View

关于ios - 通过 iOS 中的监听器检查 Firebase 当前登录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41531271/

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