我正在使用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)
}
}
}
答案 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)
}
如果用户已登录应用,请执行对受保护页面的选择。