Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Personnalisez vos rapports d'erreur Firebase Crashlytics

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Ce guide décrit comment personnaliser vos rapports d'erreur à l'aide du SDK Firebase Crashlytics. Par défaut, Crashlytics collecte automatiquement les rapports d'erreur pour tous les utilisateurs de votre application (vous pouvez désactiver les rapports d'erreur automatiques et activer les rapports d'activation pour vos utilisateurs à la place). Crashlytics fournit quatre mécanismes de journalisation prêts à l'emploi : clés personnalisées , journaux personnalisés , identifiants d'utilisateur et exceptions intercepté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 les problèmes qui correspondent à 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. Par example:

Rapide

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

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

Objectif c

Lors de la définition d'entiers, de booléens ou de flottants, placez la valeur sous la forme @( 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. Par example:

Rapide

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

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

Objectif 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 en masse à l'aide de la méthode setCustomKeysAndValues ​​avec un NSDictionary comme seul paramètre :

Rapide

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)

Objectif 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 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 à vos données de plantage et les affiche sur la page Crashlytics de la console Firebase , sous l'onglet Journaux .

Rapide

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 être conforme à la propriété CustomStringConvertible . log() renvoie la propriété de description que vous définissez pour l'objet. Par example:

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

.log(format:, arguments:) formate les valeurs renvoyées par l'appel de getVaList() . Par example:

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

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

Objectif 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 ou l'autre des méthodes doit remplacer la propriété d'occurrence description . Par example:

[[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 plus de détails sur l'utilisation de log et logWithFormat , consultez la documentation de référence de Crashlytics .

Définir les identifiants des utilisateurs

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

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

Rapide

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

Objectif c

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

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. La suppression d'un identifiant utilisateur ne supprime pas les enregistrements Crashlytics existants. Si vous devez supprimer des enregistrements associés à un ID utilisateur, contactez l'assistance Firebase .

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 les rapports opt-in 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 nouvelle clé à votre fichier Info.plist :

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

    Pour désactiver le rapport d'incident automatique, transmettez false comme valeur de remplacement. Lorsqu'elle est définie sur false , la nouvelle valeur ne s'applique qu'à la prochaine exécution de l'application.

    Rapide

    Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)

    Objectif c

    [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];

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 plantage.

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 les données de votre application, vous pouvez désactiver Crash Insights dans le menu Crash Insights en haut de votre liste de problèmes Crashlytics dans la console Firebase .