Мне трудно найти четкий ответ на этот вопрос.
В настоящее время у меня есть проверка аутентификации Firebase в моем контроллере представления входа в систему, который является исходным представлением моих приложений (код ниже). Он работает нормально, но не кажется лучшим шаблоном. Во-первых, когда приложение загружается, вы получаете мерцание экрана входа в систему перед переходом на успешную аутентификацию.
Мой вопрос - похоже, что лучшее место для этого было бы в App Delegate для проверки авторизации? Однако никакие поиски в Google не заставляют меня поверить, что это обычная закономерность.
Любой совет очень ценится.
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!)
}





В didFinishLaunchingWithOptions AppDelegate поместите это в начало после 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
}
}