使用 Firebase 和 Swift 3 检查用户登录状态并加载基于它的视图控制器
Posted
技术标签:
【中文标题】使用 Firebase 和 Swift 3 检查用户登录状态并加载基于它的视图控制器【英文标题】:Checking user logged in state and loading view controllers based on it using Firebase and Swift 3 【发布时间】:2017-09-11 14:10:44 【问题描述】:我正在 swift 3 中开发企业应用程序。当用户加载应用程序时,我想检查用户是否已经登录。如果用户已经登录,用户会被带到Home view controller
,否则会显示login screen
。
此工作流程运行良好。当我使用SignUp
按钮注册新用户时,用户信息存储在 Firebase 中并向用户显示一条消息:
“A email will be send to you after verification of your identity”.
现在,如果我关闭应用程序并再次加载它,则会为刚刚注册但从未登录的用户显示Home view controller
。我被困在这一点上,至于我想要的新注册用户显示login view controller
,以便他可以从那里登录。但相反,他的应用程序直接显示Home view controller
。我会很感激这里的任何线索。
下面是我在 AppDelegate 中的代码:
func application(_ application: UIApplication, didFinishLaunchingWithOptions
launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
FIRApp.configure()
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let currentUser = FIRAuth.auth()?.currentUser
if currentUser != nil
self.window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "HomeViewController")
else
self.window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "LoginViewController")
return true
【问题讨论】:
【参考方案1】:用户的实例在那里,但是您需要检查用户的电子邮件地址是否经过验证。
为此使用 currentUser.emailVerified。
【讨论】:
感谢您的回复。我尝试使用 currentUser.Isemailverified。如果是,应用程序仍将用户直接带到主视图控制器而不是登录视图控制器 你把那个条件放在哪里了? 在上述函数中的AppDelegate中如下 if (currentUser?.isEmailVerified)! self.window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "CustomTabBarID") else self.window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "LoginViewID") 可能有很多场景...你能把登录视图控制器放在另一个故事板中重试吗?以上是关于使用 Firebase 和 Swift 3 检查用户登录状态并加载基于它的视图控制器的主要内容,如果未能解决你的问题,请参考以下文章
Firebase Auth 和 Swift:检查电子邮件是不是已在数据库中
如何检查 Firebase 数据库中的唯一用户名(swift)