快速的firebase保持用户登录

时间:2019-01-14 12:07:25

标签: swift firebase firebase-authentication

我正在使用Firebase进行用户身份验证。如果他们尚未注销,我想让用户在退出应用程序时保持登录状态。但是我只能在显示以下代码的视图控制器中执行此操作。问题是,在配置文件控制器显示之前,我先看到了先前的视图控制器。我认为,如果我可以在App委托中编写代码,但是我没有运气在App委托中实现它,也许可以解决问题。

有人可以帮我解决这个问题吗?基本上,当我再次加载该应用程序时,只会显示我的个人资料页面。

enter code here


let userDefault = UserDefaults.standard
let launchedBefore = UserDefaults.standard.bool(forKey: "usersignedin")

覆盖func viewDidLoad(){        super.viewDidLoad()

    Auth.auth().signInAndRetrieveData(with: credential) { (result, error) in
        if error == nil {
            self.userDefault.set(true, forKey: "usersignedin")
            self.userDefault.synchronize()
            print(result?.user.email)
        }
}
}

1 个答案:

答案 0 :(得分:0)

我之前遇到过这个问题,对此我有确切的解决方案。

将这两个变量添加到AppDelegate的顶部:

let userDefault = UserDefaults.standard
let launchedBefore = UserDefaults.standard.bool(forKey: “usersignedin”)

那些允许您使用userDefaults,然后允许您设置名为“ launchedBefore”的键。

在您的Firebase登录功能中添加以下内容:

//You should have the next line for whatever method you're using to authenticate your users using firebase

    Auth.auth().signInAndRetrieveData(with: credential) { (result, error) in
            if error == nil {
                self.userDefault.set(true, forKey: "usersignedin")
                self.userDefault.synchronize()
                print(result?.user.email)

如果登录没有错误,请将“ usersignedin” bool设置为true。

在您的登录View Controller中,将其添加到viewDidAppear:

            if userDefault.bool(forKey: "usersignedin") {
            performSegue(withIdentifier: "Verified", sender: self)
        }

如果用户已登录应用,请执行对受保护页面的选择。