Comprobación del usuario con logging actual de Firebase a través de la escucha en iOS

He implementado Firebase Authorization para iniciar session en mi aplicación iOS a través de Facebook y Google. Estoy codificando Swift. Cuando se inicia la aplicación, debo verificar si un usuario ya ha iniciado session para presentar el ViewController apropiado (por ejemplo, si no hay nadie conectado, presento el Controlador de Vista de inicio de session; de lo contrario, presento el Controlador de vista principal). Si utilizo la solución "fácil" ofrecida por Firebase, lo que significa

if FIRAuth.auth()?.currentUser != nil { // User is signed in. // ... } else { // No user is signed in. // ... } 

Por lo tanto, si se comtesting si el usuario actual no es nulo, sucede exactamente lo que podrían ocurrir las alertas de la guía Firebase ( https://firebase.google.com/docs/auth/ios/manage-users ).

"Nota: currentUser también puede ser nil porque el object auth no ha terminado de inicializarse. Si usa un oyente para realizar un seguimiento del estado de inicio de session del usuario, no necesita manejar este caso".

Entonces me gustaría implementar el oyente como se sugiere en la guía:

 handle = FIRAuth.auth()?.addStateDidChangeListener() { (auth, user) in // ... } 

El oyente manejará también el estado intermedio para que se active cuando se crea el object Auth. Punto es que realmente no puedo hacerlo funcionar correctamente. ¿Alguien puede ayudarme a usar este oyente para comprobar si un usuario ha iniciado session?

Gracias

Lo implementé así:

 FIRAuth.auth()?.addStateDidChangeListener { auth, user in if let user = user { // User is signed in. Show home screen } else { // No User is signed in. Show user the login screen } } 

Si no necesita el object User después de la comprobación, puede replace if let user = user con una testing booleana, como esta:

 FIRAuth.auth()?.addStateDidChangeListener { auth, user in if user != nil { // User is signed in. Show home screen } else { // No User is signed in. Show user the login screen } } 

Dónde poner al oyente (de los comentarios):

Para los casos que solía verificar si un usuario inició viewDidLoad , fue suficiente con ponerlo al principio de viewDidLoad en el controller de vista específico. Pero si tiene algún caso en el que necesite verificar cada vez que ingrese al controller de vista específico, sería mejor ponerlo al principio de viewDidAppear . Pero creo que, en la mayoría de los casos, debe marcar solo una vez, si el usuario ingresa a la vista