使用 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 3 完成处理程序 Bool

如何检查 Firebase 数据库中的唯一用户名(swift)

Swift - 我如何检查 firebase 服务器是不是可用?

检查用户名是不是已经存在:Swift、Firebase

Firebase 退出在 Swift 中不起作用