在App Delegate中进行Swift和Firebase Auth检查?

时间:2018-12-17 22:00:52

标签: ios swift firebase firebase-authentication

我很难找到一个明确的答案。

目前,我的登录视图控制器中正在执行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!)
}

1 个答案:

答案 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
  }

}