Personnaliser vos rapports d'erreur Firebase Crashlytics


Dans le tableau de bord Crashlytics, vous pouvez cliquer sur un problème et obtenir un rapport d'événement détaillé. Vous pouvez personnaliser ces rapports pour mieux comprendre ce qui se passe dans votre application et les circonstances entourant les événements signalés à Crashlytics.

  • Obtenez automatiquement des journaux de fil d'Ariane si votre application utilise le SDK Firebase pour Google Analytics. Ces journaux vous permettent de voir les actions des utilisateurs qui ont précédé un événement collecté par Crashlytics dans votre application.

  • Désactivez la création automatique de rapports d'erreur et activez les rapports nécessitant une confirmation pour vos utilisateurs. Notez que, par défaut, Crashlytics collecte automatiquement les rapports d'erreur pour tous les utilisateurs de votre application.

Ajouter des clés personnalisées

Les clés personnalisées vous permettent de connaître l'état spécifique de votre application pouvant entraîner un plantage. Vous pouvez associer des paires clé-valeur arbitraires à vos rapports d'erreur, puis utiliser les clés personnalisées pour rechercher et filtrer les rapports d'erreur dans la console Firebase.

  • Dans le tableau de bord Crashlytics, vous pouvez rechercher des problèmes correspondant à une clé personnalisée.
  • Lorsque vous examinez un problème spécifique dans la console, vous pouvez afficher les clés personnalisées associées à chaque événement (sous-onglet Clés) et même filtrer les événements par clés personnalisées (menu Filtrer en haut de la page).

Utilisez la méthode setCustomValue pour définir des paires clé/valeur. Exemple :

Swift

// Set int_key to 100.
Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")

// Set str_key to "hello".
Crashlytics.crashlytics().setCustomValue("hello", forKey: "str_key")

Objective-C

Lorsque vous définissez des entiers, des valeurs booléennes ou des nombres à virgule flottante, encadrez la valeur avec @(value).

// Set int_key to 100.
[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"];

// Set str_key to "hello".
[[FIRCrashlytics crashlytics] setCustomValue:@"hello" forKey:@"str_key"];

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

Swift

Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")

// Set int_key to 50 from 100.
Crashlytics.crashlytics().setCustomValue(50, forKey: "int_key")

Objective-C

[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"];

// Set int_key to 50 from 100.
[[FIRCrashlytics crashlytics] setCustomValue:@(50) forKey:@"int_key"];

Ajoutez des paires clé-valeur de manière groupée à l'aide de la méthode setCustomKeysAndValues avec un NSDictionary comme seul paramètre :

Swift

let keysAndValues = [
                 "string key" : "string value",
                 "string key 2" : "string value 2",
                 "boolean key" : true,
                 "boolean key 2" : false,
                 "float key" : 1.01,
                 "float key 2" : 2.02
                ] as [String : Any]

Crashlytics.crashlytics().setCustomKeysAndValues(keysAndValues)

Objective-C

NSDictionary *keysAndValues =
    @{@"string key" : @"string value",
      @"string key 2" : @"string value 2",
      @"boolean key" : @(YES),
      @"boolean key 2" : @(NO),
      @"float key" : @(1.01),
      @"float key 2" : @(2.02)};

[[FIRCrashlytics crashlytics] setCustomKeysAndValues: keysAndValues];

Ajouter des messages de journal personnalisés

Pour obtenir plus de contexte sur les événements qui ont conduit à un plantage, vous pouvez ajouter des journaux Crashlytics personnalisés à votre application. Crashlytics associe les journaux à vos données de plantage et les affiche sur la page Crashlytics de la console Firebase, sous l'onglet Journaux.

Swift

Utilisez log() ou log(format:, arguments:) pour identifier les problèmes. Si vous souhaitez obtenir une sortie de journal utile avec des messages, l'objet que vous transmettez à log() doit respecter la propriété CustomStringConvertible. log() renvoie la propriété de description que vous définissez pour l'objet. Exemple :

Crashlytics.crashlytics().log("Higgs-Boson detected! Bailing out…, \(attributesDict)")

.log(format:, arguments:) met en forme les valeurs renvoyées après l'appel de getVaList(). Exemple :

Crashlytics.crashlytics().log(format: "%@, %@", arguments: getVaList(["Higgs-Boson detected! Bailing out…", attributesDict]))

Pour en savoir plus sur l'utilisation de log() ou log(format:, arguments:), consultez la documentation de référence sur Crashlytics.

Objective-C

Utilisez log ou logWithFormat pour identifier les problèmes. Notez que si vous souhaitez obtenir une sortie de journal utile avec des messages, l'objet que vous transmettez à l'une des méthodes doit remplacer la propriété d'instance description. Exemple :

[[FIRCrashlytics crashlytics] log:@"Simple string message"];

[[FIRCrashlytics crashlytics] logWithFormat:@"Higgs-Boson detected! Bailing out... %@", attributesDict];

[[FIRCrashlytics crashlytics] logWithFormat:@"Logging a variable argument list %@" arguments:va_list_arg];

Pour en savoir plus sur l'utilisation de log et logWithFormat, consultez la documentation de référence sur Crashlytics.

Définir des identifiants utilisateur

Pour diagnostiquer un problème, il est souvent utile de savoir quel utilisateur a rencontré un plantage donné. Crashlytics permet d'identifier de manière anonyme 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 :

Swift

Crashlytics.crashlytics().setUserID("123456789")

Objective-C

[[FIRCrashlytics crashlytics] setUserID:@"123456789"];

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

Obtenir les journaux des fils d'Ariane

Les journaux de breadcrumb vous permettent de mieux comprendre les interactions d'un utilisateur avec votre application avant un plantage, un problème non fatal ou un événement ANR. Ces journaux peuvent être utiles lorsque vous essayez de reproduire et de déboguer un problème.

Les journaux de fil d'Ariane sont alimentés par Google Analytics. Pour les obtenir, vous devez activer Google Analytics pour votre projet Firebase et ajouter le SDK Firebase pour Google Analytics à votre application. Une fois ces conditions remplies, les journaux de fil d'Ariane sont automatiquement inclus avec les données d'un événement dans l'onglet Journaux lorsque vous consultez les détails d'un problème.

Le SDK Analytics enregistre automatiquement l'événement screen_view, ce qui permet aux journaux du fil d'Ariane d'afficher la liste des écrans visualisés avant l'événement de plantage, d'erreur non fatale ou d'erreur ANR. Un journal de fil d'Ariane screen_view contient un paramètre firebase_screen_class.

Les journaux de fil d'Ariane sont également renseignés par tous les événements personnalisés que vous enregistrez manuellement dans la session de l'utilisateur, y compris les données de paramètre de l'événement. Ces données peuvent aider à afficher une série d'actions utilisateur ayant conduit à un plantage, un problème non fatal ou un événement ANR.

Notez que vous pouvez contrôler la collecte et l'utilisation des données Google Analytics, y compris les données qui renseignent les journaux de fil d'Ariane.

Activer les rapports nécessitant une confirmation

Par défaut, Crashlytics collecte automatiquement les rapports d'erreur pour tous les utilisateurs de votre application. Pour permettre aux utilisateurs de mieux contrôler les données qu'ils envoient, vous pouvez activer les rapports nécessitant une confirmation en désactivant les rapports automatiques et en n'envoyant des données à Crashlytics que lorsque vous le souhaitez dans votre code :

  1. Désactivez la collecte automatique en ajoutant une clé à votre fichier Info.plist:

    • Clé : FirebaseCrashlyticsCollectionEnabled
    • Valeur : false
  2. Activez la collecte pour certains utilisateurs en appelant le forçage de la collecte de données Crashlytics au moment de l'exécution. La valeur de forçage persiste entre les lancements de votre application afin que Crashlytics puisse collecter automatiquement des rapports.

    Pour désactiver la création automatique de rapports d'erreur, transmettez false comme valeur de remplacement. Lorsque cette valeur est définie sur false, la nouvelle valeur ne s'applique qu'à l'exécution suivante de l'application.

    Swift

    Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)

    Objective-C

    [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];

Gérer les données des insights sur les plantages

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 s'inscrit dans une tendance globale. Pour de nombreux problèmes, Crash Insights fournit même des ressources pour vous aider à déboguer le plantage.

Crash Insights utilise des données de plantage agrégées pour identifier les tendances de stabilité courantes. Si vous préférez ne pas partager les données de votre application, vous pouvez désactiver Crash Insights dans le menu Crash Insights en haut de la liste des problèmes Crashlytics dans la console Firebase.