Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Personnalisez vos rapports de plantage Firebase Crashlytics

Ce guide explique comment personnaliser vos rapports d'erreur à l'aide du SDK Firebase Crashlytics. Par défaut, Crashlytics recueille automatiquement des rapports pour tous les utilisateurs accident de votre application (vous pouvez désactiver cette fonctionnalité plantage automatique et activer opt-in reporting pour vos utilisateurs à la place). Crashlytics fournit quatre mécanismes de journalisation de la boîte: touches personnalisées , les journaux personnalisés , des identifiants d'utilisateur , et les exceptions rencontrées .

Ajouter des clés personnalisées

Les clés personnalisées vous aident à obtenir l'état spécifique de votre application menant à un plantage. Vous pouvez associer des paires clé/valeur arbitraires à vos rapports de plantage, puis utiliser les clés personnalisées pour rechercher et filtrer les rapports de plantage dans la console Firebase.

  • Dans le tableau de bord Crashlytics , vous pouvez rechercher des questions qui correspondent à une clé personnalisée.

  • Lorsque vous examinez un problème spécifique dans la console, vous pouvez afficher les touches personnalisées associées pour chaque événement (Keys sous - onglet) et même de filtrer les événements par touches personnalisées (menu Filtre en haut de la page).

Utilisez la setCustomKey méthode d'instance pour fixer les paires clé / valeur. Notez que setCustomKey est surchargée pour la value paramètre d'accepter toute primitive ou String argument. Voici quelques exemples:

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 */);

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
}

Vous pouvez également modifier la valeur d'une clé existante en appelant la clé et en la définissant sur une valeur différente. Par exemple:

Java

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("current_level", 3);
crashlytics.setCustomKey("last_UI_action", "logged_in");

Kotlin+KTX

val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("current_level", 3)
    key("last_UI_action", "logged_in")
}

Ajouter une clé paires / valeur en vrac en faisant passer une instance de CustomKeysAndValues à la setCustomKeys méthode d'instance:

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);

Kotlin+KTX

Pour Kotlin, la fonctionnalité existante est plus simple que d' utiliser le CustomKeysAndValues constructeur.

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)
}

Ajouter des messages de journal personnalisés

Pour vous donner plus de contexte pour les événements menant à un plantage, vous pouvez ajouter des journaux Crashlytics personnalisés à votre application. Crashlytics associe les journaux avec vos données sur les accidents et les affiche dans la page Crashlytics de la console Firebase , sous l'onglet Journaux.

Utilisez log pour les questions d'aide punctiformes. Par exemple:

Java

FirebaseCrashlytics.getInstance().log("message");

Kotlin+KTX

Firebase.crashlytics.log("message")

Définir les identifiants des utilisateurs

Pour diagnostiquer un problème, il est souvent utile de savoir lequel de vos utilisateurs a subi un plantage donné. Crashlytics inclut un moyen d'identifier anonymement les utilisateurs dans vos rapports d'erreur.

Pour ajouter des ID utilisateur à vos rapports, attribuez à chaque utilisateur un identifiant unique sous la forme d'un numéro d'ID, d'un jeton ou d'une valeur hachée :

Java

FirebaseCrashlytics.getInstance().setUserId("user123456789");

Kotlin+KTX

Firebase.crashlytics.setUserId("user123456789")

Si vous avez besoin d'effacer un identifiant d'utilisateur après l'avoir défini, réinitialisez la valeur sur une chaîne vide. L'effacement d'un identifiant utilisateur ne supprime pas les enregistrements Crashlytics existants. Si vous avez besoin de supprimer des enregistrements associés à un ID utilisateur, contactez le support Firebase .

(Android NDK uniquement) métadonnées Ajouter aux rapports de plantage NDK

Vous pouvez éventuellement inclure l' crashlytics.h - tête dans votre code C ++ pour ajouter des métadonnées à des rapports de plantage NDK, tels que les clés personnalisés , journaux personnalisés , identifiants d'utilisateur . Toutes ces options sont décrites sur cette page ci-dessus.

crashlytics.h est disponible en - tête uniquement bibliothèque C ++ dans le Firebase SDK Android GitHub Repository .

Lisez les commentaires dans le fichier d'en-tête pour obtenir des instructions sur l'utilisation des API NDK C++.

Signaler des exceptions non fatales

En plus de signaler automatiquement les plantages de votre application, Crashlytics vous permet d'enregistrer des exceptions non fatales et de vous les envoyer au prochain lancement de votre application.

Utilisez la recordException méthode pour enregistrer des exceptions non fatales dans votre application catch des blocs. Par exemple:

Java

try {
    methodThatThrows();
} catch (Exception e) {
    FirebaseCrashlytics.getInstance().recordException(e);
    // handle your exception here
}

Kotlin+KTX

try {
    methodThatThrows()
} catch (e: Exception) {
    Firebase.crashlytics.recordException(e)
    // handle your exception here
}

Toutes les exceptions enregistrées apparaissent comme des problèmes non fatals dans la console Firebase. Le résumé du problème contient toutes les informations d'état que vous obtenez normalement en cas de plantage, ainsi que les pannes par version d'Android et par périphérique matériel.

Crashlytics traite les exceptions sur un thread d'arrière-plan dédié pour minimiser l'impact sur les performances de votre application. Pour réduire le trafic réseau de vos utilisateurs, Crashlytics regroupe par lots les exceptions enregistrées et les envoie au prochain lancement de l'application.

Activer les rapports d'activation

Par défaut, Crashlytics collecte automatiquement les rapports de plantage pour tous les utilisateurs de votre application. Pour donner aux utilisateurs plus de contrôle sur les données qu'ils envoient, vous pouvez activer la création de rapports opt-in en désactivant la création de rapports automatiques et en envoyant des données à Crashlytics uniquement lorsque vous le souhaitez dans votre code :

  1. Dans la application bloc de votre AndroidManifest.xml fichier, ajoutez une meta-data tag pour désactiver la collecte automatique:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. Activez la collecte pour certains utilisateurs en appelant le remplacement de collecte de données Crashlytics au moment de l'exécution. La valeur de remplacement persiste lors des lancements de votre application afin que Crashlytics puisse automatiquement collecter des rapports. Pour retirer des rapports de collision automatique, passer false que la valeur de remplacement. Lorsqu'il est réglé sur false , la nouvelle valeur ne s'applique pas avant la prochaine exécution de l'application.

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

    Kotlin+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

Gérer les données Crash Insights

Crash Insights vous aide à résoudre les problèmes en comparant vos traces de pile anonymisées aux traces d'autres applications Firebase et en vous indiquant si votre problème fait partie d'une tendance plus large. Pour de nombreux problèmes, Crash Insights fournit même des ressources pour vous aider à déboguer le crash.

Crash Insights utilise des données de crash agrégées pour identifier les tendances de stabilité courantes. Si vous préférez ne pas partager vos données de l' application, vous pouvez choisir de Insights crash dans le menu Insights crash en haut de votre liste d'émission Crashlytics dans la console Firebase .