Cómo informar fallos en iOS

Firebase Crash Reporting crea informes detallados sobre los errores de tu app. Los errores se agrupan en problemas que tienen seguimientos de pila similares y se clasifican según la gravedad del impacto en tus usuarios. Además de recibir informes automáticos, puedes registrar eventos personalizados que te ayuden a capturar los pasos que conducen a una falla.

Configuración de Crash Reporting

Para configurar Crash Reporting en tu app, sigue estos pasos:

  1. Instala el SDK de Firebase.
  2. En Firebase console, agrega tu app al proyecto de Firebase.
  3. Agrega la dependencia de Firebase Crash Reporting a tu Podfile:
    pod 'Firebase/Crash'
  4. Importa el módulo de Firebase en tu UIApplicationDelegate:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  5. Configura una instancia compartida de FirebaseApp, generalmente en el método application:didFinishLaunchingWithOptions: de tu aplicación:

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    

Sube archivos de símbolos

Para poder ver informes de fallos legibles, debes subir archivos de símbolos después de cada compilación. Para hacerlo de forma automática, agrega una secuencia de comandos de ejecución a Xcode mediante estos pasos:

  1. Descarga una clave de cuenta de servicio para autenticar tus cargas. En Firebase console, selecciona tu proyecto y haz clic en Generar nueva clave privada.
  2. En Xcode, haz clic en el destino de tu aplicación, selecciona Fases de compilación y haz clic en "+" para agregar una fase.
  3. Selecciona Ejecutar secuencia de comandos y agrega el siguiente contenido con los valores apropiados para service account path y GOOGLE_APP_ID:
    # Replace this with the GOOGLE_APP_ID from your GoogleService-Info.plist file
    GOOGLE_APP_ID=1:my:app:id
    
    # Replace the /Path/To/ServiceAccount.json with the path to the key you just downloaded
    "${PODS_ROOT}"/FirebaseCrash/upload-sym "/Path/To/ServiceAccount.json"
        

Cómo crear tu primer error

Para crear tu primer error, agrega una declaración a tu método didFinishLaunchingWithOptions de AppDelegate para causar un bloqueo cuando se inicie la app, justo después de la llamada de inicialización de Firebase:

Swift

fatalError()

Objective-C

assert(false);

Ahora que agregaste esta declaración, puedes hacer lo siguiente para crear un error:

  1. Inicia la app desde Xcode.
  2. Haz clic en Detener en Xcode para desvincular el depurador.
  3. Inicia la app directamente desde la pantalla principal en el dispositivo o en el emulador.
  4. Espera hasta que tu app falle.
  5. Quita la línea que genera la falla para que tu app se pueda iniciar correctamente.
  6. Vuelve a ejecutar el inicio rápido desde Xcode. En unos 15 segundos, deberías ver un mensaje de registro que indique que el informe se subió correctamente.
  7. Consulta la sección Crash Reporting de Firebase console para ver el error. Ten en cuenta que los errores demoran entre 1 y 2 minutos en aparecer.

Cómo crear registros personalizados

Puedes usar FIRCrashLog() para crear los mensajes de registro personalizados que se incluyen en tus informes de fallos. El siguiente ejemplo demuestra cómo crear un mensaje de registro:

Swift

FirebaseCrashMessage("Cause Crash button clicked")
fatalError()

Objective-C

FIRCrashLog(@"Cause Crash button clicked");
assert(NO);

Compatibilidad con Bitcode

Si habilitaste Bitcode, debes hacer lo siguiente para simbolizar tu app, de manera que puedas leer los seguimientos de pila que recopila Crash Reporting:

  1. Descarga los archivos de símbolos de depuración (.dSYM) de tu app. Para obtener información sobre cómo descargar estos archivos, consulta Cómo importar y ver errores en la ventana Dispositivos.

  2. Después de descargar todos los archivos .dSYM como un .xcarchive, extrae los archivos .dSYM a una ubicación conveniente.

  3. Usa la secuencia de comandos de carga por lotes para subir el archivo .dSYM que corresponde a la versión de la app que necesitas simbolizar. Es posible que Spotlight tarde un minuto en actualizar su índice para incluir este archivo.

    ./Pods/FirebaseCrash/batch-upload -i "Path/To/Info.plist" -p "Path/To/GoogleService-Info.plist" "Path/To/ServiceAccount.json" "UUID-OF-DSYM"
    

Problemas conocidos

  • Actualmente, el SDK de Firebase no es compatible con la clase NSException en el simulador de Xcode. Si usas esta clase, se generarán seguimientos de pila erróneos en Firebase console. De manera alternativa, puedes usar un dispositivo físico o probar un tipo diferente de excepción, como una assert.

  • Crash Reporting usa un ID único para identificar a cada usuario. Debido a un error conocido en Xcode 8.1, la creación de este ID falla en los simuladores de iOS 10, lo que impide subir informes de errores. Para solucionar esto en Xcode 8.1, puedes ejecutar pruebas en un dispositivo o activar Keychain Sharing en la sección Capabilities de la configuración de tu app. Este error se corrigió en la actualización beta de Xcode 8.2.

Pasos siguientes

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.