我很难找到一个明确的答案。
目前,我的登录视图控制器中正在执行Firebase身份验证,这是我的应用程序初始视图(下面的代码)。它工作正常,但似乎不是最佳模式。首先,当应用启动时,您会在成功认证成功之前先登录屏幕。
我的问题-看来最好的地方是在App Delegate中进行身份验证检查?毫不费力地使用谷歌搜索使我相信这是常见的模式。
任何建议都值得赞赏。
var handle: AuthStateDidChangeListenerHandle?
//----- init, lifecycle & auth ----//
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
handle = Auth.auth().addStateDidChangeListener { (auth, user) in
if((user) != nil){
print("logged in as: " + user!.uid)
self.performSegue(withIdentifier: "LoginSegue", sender: self)
}else{
print("Not Logged in")
}
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
Auth.auth().removeStateDidChangeListener(handle!)
}
答案 0 :(得分:1)
在AppDelegate的didFinishLaunchingWithOptions
中,将其放在firebase.config之后的开头
self.window?.addSubview(loadingView) // set tag for it
handle = Auth.auth().addStateDidChangeListener { (auth, user) in
// here remove loadingView
if((user) != nil){
let vc = // homeVC
self.window?.rootViewController = vc
}else{
print("Not Logged in")
let vc = // Login
self.window?.rootViewController = vc
}
}