es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema de autenticación al ejecutar una aplicación ionic usando Firebase en un dispositivo nativo, todo funciona correctamente con la recarga en vivo.

¡Buenos días!

Tengo un problema extraño en el que puedo ejecutar y autenticar a mi usuario en mi dispositivo iOS perfectamente bien al ejecutar la aplicación utilizando el siguiente comando.

ionic capacitor run -l --external

Usando un emulador, a veces funciona, aunque no siempre.

Cuando intento implementar la aplicación utilizando Xcode, la aplicación se abre y se ve normal, pero si intento enviar solicitudes de autenticación a Firebase, la aplicación sigue cargando, aunque las solicitudes se realizan correctamente.

Originalmente pensé que el problema se debía al uso de LocalStorage, así que reconstruí todo utilizando Ionic Storage. Pero eso no ayudó.

Probé diferentes versiones de agregar el SDK de Firebase en Swift o en el archivo Cocoa Pods, pero el comportamiento no cambia, así que no creo que este sea un problema con una configuración incorrecta de Firebase, ¿cuál es la forma correcta de hacer esto por cierto – o ¿Ya lo hace Ionic por mí?

La salida de Xcode tampoco proporciona información valiosa.


2021-12-01 11:20:13.990875+0100 App[3162:27661] Writing analzed variants.
2021-12-01 11:20:14.125754+0100 App[3162:27661] KeyboardPlugin: resize mode - native
⚡️ Loading app at capacitor://localhost...
2021-12-01 11:20:14.552490+0100 App[3162:27661] Writing analzed variants.
⚡️ WebView loaded
⚡️ [log] - Angular is running in development mode. Call enableProdMode() to enable production mode.
⚡️ [log] - null
⚡️ To Native -> App addListener 60635511
2021-12-01 11:20:21.393141+0100 App[3162:27661] [Accessibility] WKContentView[@] set up: @ pid: @ MACH_PORT -830404096

Función de inicio de sesión:
“`
loginWithEmail() {
let email: string = this.loginForm.get(“email”).value;
let password: string = this.loginForm.get(“password”).value;

this.loadingService.present({
message: "Iniciando sesión…"
});

this.authService
.loginWithEmail(email, password)
.then((result) => {
this.authService.SetUserData(result.user)
this.resetLoginForm();
this.loginSuccess();
this.router.navigateByUrl("/tabs/intensity");
})
.catch(error => {
console.log(error);
this.loginFailed(error);
});
}

loginSuccess() {
this.loadingService.dismiss();

this.toastService.present({
message: "¡Bienvenido de vuelta!",
duration: 3000,
color: "secondary"
});
}

import { AngularFireAuth } from "@angular/fire/compat/auth";

async loginWithEmail(email: string, password: string) {
return await this.afAuth.signInWithEmailAndPassword(email, password);
}

función SetUserData (usuario) {
this.user = user;
const userRef: AngularFirestoreDocument<any> = this.afs.doc(users/${user.uid});
const userData: User = {
uid: user.uid,
email: user.email,
displayName: user.displayName,
photoURL: user.photoURL,
emailVerified: user.emailVerified
}
return userRef.set(userData, {
merge: true
})
}

Al ejecutarlo varias veces, a veces obtengo este error.

API error: <_UIKBCompatInputView: 0x7fb965726040; frame = (0 0; 0 0); layer = <CALayer: 0x600002f718a0>> returned 0 width, assuming UIViewNoIntrinsicMetric

Realmente estoy atascado en esto y agradecería cualquier ayuda. Gracias y saludos cordiales.

Ionic 6.18.1
Angular 12.1.5
Xcode Version 13.1 (13A1030d)

Tags:  ,

Answer

  1. Avatar for davy.ai

    Solución de problemas de autenticación de Firebase en iOS utilizando Xcode y Ionic Capacitor

    Descripción del problema

    El usuario experimenta un problema extraño donde puede ejecutar y autenticar su usuario en su dispositivo iOS perfectamente bien usando el siguiente comando:

    ionic capacitor run -l --external
    

    Usando un emulador, funciona a veces, aunque no siempre.

    Cuando intentan implementar la aplicación usando Xcode, la aplicación se abre y se ve normal, pero si intentan enviar solicitudes de autenticación a Firebase, la aplicación simplemente sigue cargando, aunque las solicitudes se realizan con éxito.

    Análisis

    El usuario pensó que el problema se debía al uso de LocalStorage, por lo que reconstruyó todo usando Ionic Storage, pero eso no ayudó.

    Intentaron diferentes versiones de agregar el SDK de Firebase en Swift o en el archivo Cocoa Pods, pero el comportamiento no cambia, por lo que no creen que este sea un problema con una configuración incorrecta de Firebase. No están seguros de cuál es la forma adecuada de configurar Firebase en su aplicación usando Ionic.

    La salida de Xcode tampoco proporciona información valiosa.

    Solución

    Según la información proporcionada, hay algunas cosas que el usuario puede probar para solucionar este problema:

    1. Verificar la conectividad de red del dispositivo/emulador. A veces, la conectividad de red lenta o poco confiable puede causar problemas con la autenticación de Firebase.
    2. Verificar la compatibilidad de versiones de Firebase SDKs, Angular e Ionic. Asegurarse de que todos estos componentes sean compatibles entre sí.

    3. Verificar que la configuración de Firebase en la aplicación sea correcta. Siga la documentación oficial de Firebase e Ionic para su configuración adecuada.

    4. Habilitar la depuración en Xcode y comprobar los registros de consola para cualquier error o advertencia que pueda estar relacionado con el problema. El mensaje de error proporcionado por Xcode no es claro, pero podría haber otros mensajes de error que puedan ayudar al usuario a identificar la causa raíz del problema.

    5. Verificar si el problema se puede reproducir en un dispositivo/emulador diferente. Esto puede ayudar a determinar si el problema es específico del dispositivo/emulador que se está utilizando.

    6. Considerar el uso de otros proveedores de autenticación como Google, Facebook o Twitter para autenticar usuarios. Esto puede ayudar a determinar si el problema es específico de la autenticación de Firebase.

    7. Probar con una versión diferente de AngularFire2/AngularFire. A veces, actualizar o degradar la versión de AngularFire2/AngularFire puede resolver problemas de compatibilidad con otros componentes.

    En resumen, el usuario debe verificar su configuración de Firebase en la aplicación, verificar la compatibilidad de versiones, probar en un dispositivo/emulador diferente y habilitar la depuración en Xcode para identificar la causa raíz del problema.

Comments are closed.