Esta guía describe cómo personalizar sus informes de fallas usando el SDK de Firebase Crashlytics. De forma predeterminada, Crashlytics recopila automáticamente informes de fallas para todos los usuarios de su aplicación (puede desactivar los informes automáticos de fallas y habilitar los informes opcionales para sus usuarios en su lugar). Crashlytics proporciona cuatro mecanismos de registro listos para usar: claves personalizadas, registros personalizados , identificadores de usuario y excepciones detectadas .
Añadir claves personalizadas
Las claves personalizadas lo ayudan a obtener el estado específico de su aplicación antes de que se bloquee. Puede asociar pares clave/valor arbitrarios con sus informes de fallas y luego usar las claves personalizadas para buscar y filtrar informes de fallas en la consola de Firebase.
En el panel de control de Crashlytics , puede buscar problemas que coincidan con una clave personalizada.
Cuando está revisando un problema específico en la consola, puede ver las claves personalizadas asociadas para cada evento ( subpestaña Claves ) e incluso filtrar los eventos por claves personalizadas ( menú Filtro en la parte superior de la página).
Utilice el método de instancia setCustomKey
para establecer pares clave/valor. Tenga en cuenta que setCustomKey
está sobrecargado para que el parámetro de value
acepte cualquier argumento primitivo o String
. Aquí hay unos ejemplos:
Kotlin+KTX
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("my_string_key", "foo") // String value key("my_bool_key", true) // boolean value key("my_double_key", 1.0) // double value key("my_float_key", 1.0f) // float value key("my_int_key", 1) // int value }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("my_string_key", "foo" /* string value */); crashlytics.setCustomKey("my_bool_key", true /* boolean value */); crashlytics.setCustomKey("my_double_key", 1.0 /* double value */); crashlytics.setCustomKey("my_float_key", 1.0f /* float value */); crashlytics.setCustomKey("my_int_key", 1 /* int value */);
También puede modificar el valor de una clave existente llamando a la clave y estableciéndola en un valor diferente. Por ejemplo:
Kotlin+KTX
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("current_level", 3) key("last_UI_action", "logged_in") }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("current_level", 3); crashlytics.setCustomKey("last_UI_action", "logged_in");
Agregue pares clave/valor de forma masiva pasando una instancia de CustomKeysAndValues
al método de instancia setCustomKeys
:
Kotlin+KTX
Para Kotlin, la funcionalidad existente es más simple que usar el constructor CustomKeysAndValues
.
crashlytics.setCustomKeys { key("str_key", "hello") key("bool_key", true) key("int_key", 1) key("long_key", 1L) key("float_key", 1.0f) key("double_key", 1.0) }
Java
CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putString("string key 2", "string value 2") .putBoolean("boolean key", True) .putBoolean("boolean key 2", False) .putFloat("float key", 1.01) .putFloat("float key 2", 2.02) .build(); FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);
Agregar mensajes de registro personalizados
Para tener más contexto sobre los eventos que conducen a un bloqueo, puede agregar registros personalizados de Crashlytics a su aplicación. Crashlytics asocia los registros con sus datos de bloqueo y los muestra en la página de Crashlytics de Firebase console , en la pestaña Registros .
Use log
para ayudar a identificar problemas. Por ejemplo:
Kotlin+KTX
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
Establecer identificadores de usuario
Para diagnosticar un problema, a menudo es útil saber cuál de sus usuarios experimentó un bloqueo determinado. Crashlytics incluye una forma de identificar de forma anónima a los usuarios en sus informes de fallos.
Para agregar ID de usuario a sus informes, asigne a cada usuario un identificador único en forma de número de ID, token o valor hash:
Kotlin+KTX
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
Si alguna vez necesita borrar un identificador de usuario después de configurarlo, restablezca el valor a una cadena en blanco. Borrar un identificador de usuario no elimina los registros de Crashlytics existentes. Si necesita eliminar registros asociados con una identificación de usuario, comuníquese con el soporte de Firebase .
(Solo Android NDK) Agregar metadatos a los informes de fallas de NDK
Opcionalmente, puede incluir el encabezado crashlytics.h
en su código C++ para agregar metadatos a los informes de fallas del NDK, como claves personalizadas, registros personalizados , identificadores de usuario . Todas estas opciones se describen en esta página anterior.
crashlytics.h
está disponible como una biblioteca de C++ de solo encabezado en el repositorio de GitHub del SDK de Android de Firebase .
Lea los comentarios en el archivo de encabezado para obtener instrucciones sobre el uso de las API de NDK C++.
Reportar excepciones no fatales
Además de informar automáticamente los bloqueos de su aplicación, Crashlytics le permite registrar excepciones no fatales y se las envía la próxima vez que se inicia su aplicación.
Usa el método recordException
para registrar excepciones no fatales en los bloques catch
de tu aplicación. Por ejemplo:
Kotlin+KTX
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { FirebaseCrashlytics.getInstance().recordException(e); // handle your exception here }
Todas las excepciones registradas aparecen como problemas no fatales en Firebase console. El resumen del problema contiene toda la información de estado que normalmente obtienes de los bloqueos, junto con desgloses por versión de Android y dispositivo de hardware.
Crashlytics procesa las excepciones en un subproceso en segundo plano dedicado para minimizar el impacto en el rendimiento de su aplicación. Para reducir el tráfico de red de sus usuarios, Crashlytics agrupa las excepciones registradas y las envía la próxima vez que se inicia la aplicación.
Habilitar informes de suscripción
De forma predeterminada, Crashlytics recopila automáticamente informes de fallas para todos los usuarios de su aplicación. Para dar a los usuarios más control sobre los datos que envían, puede habilitar la opción de informes desactivando los informes automáticos y solo enviando datos a Crashlytics cuando lo elija en su código:
En el bloque de
application
de su archivoAndroidManifest.xml
, agregue una etiqueta demeta-data
para desactivar la recopilación automática:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
Habilite la recopilación para usuarios seleccionados llamando a la anulación de recopilación de datos de Crashlytics en tiempo de ejecución. El valor de anulación persiste entre los lanzamientos de su aplicación para que Crashlytics pueda recopilar informes automáticamente. Para optar por no recibir informes automáticos de fallas, pase
false
como valor de anulación. Cuando se establece enfalse
, el nuevo valor no se aplica hasta la próxima ejecución de la aplicación.Kotlin+KTX
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Administrar datos de Crash Insights
Crash Insights lo ayuda a resolver problemas comparando sus seguimientos de pila anónimos con los de otras aplicaciones de Firebase y permitiéndole saber si su problema es parte de una tendencia más amplia. Para muchos problemas, Crash Insights incluso proporciona recursos para ayudarlo a depurar el bloqueo.
Crash Insights utiliza datos de fallas agregados para identificar tendencias de estabilidad comunes. Si prefiere no compartir los datos de su aplicación, puede excluirse de Crash Insights desde el menú Crash Insights en la parte superior de su lista de problemas de Crashlytics en la consola de Firebase .