Personnalisez vos rapports d'erreur Firebase Crashlytics

Ce guide explique 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 utilisateur et exceptions interceptées .

Signaler les exceptions

Signaler les exceptions détectées

Si vous avez des exceptions attendues, vous pouvez demander au SDK Crashlytics de les signaler comme événements non fatals . Ces événements sont enregistrés sur l'appareil, puis envoyés avec le prochain rapport d'événement fatal ou lorsque l'utilisateur final redémarre le jeu.

Vous pouvez consigner les exceptions en C# à l’aide de la méthode suivante :

Crashlytics.LogException(Exception ex);

Vous pouvez enregistrer les exceptions attendues dans les blocs try/catch de votre jeu :

try {
    myMethodThatThrows();
} catch (Exception e) {
   Crashlytics.LogException(e);
   // handle your exception here!
}

Signaler les exceptions non interceptées

Pour les exceptions non interceptées qui ne font pas planter votre jeu (par exemple, les exceptions C# non interceptées dans la logique du jeu), vous pouvez demander au SDK Crashlytics de les signaler comme événements fatals en définissant la propriété Crashlytics.ReportUncaughtExceptionsAsFatal sur true à l'endroit où vous initialisez Crashlytics dans votre projet Unity. . Ces événements sont signalés à Crashlytics en temps réel sans que l'utilisateur final ait besoin de redémarrer le jeu.

Signaler ces exceptions non détectées comme événements fatals signifie qu'elles seront prises en compte dans vos statistiques d'utilisateur sans crash et dans les alertes de vitesse.

Notez que les crashs natifs sont toujours signalés comme des événements fatals . Ces événements sont enregistrés sur l'appareil, puis envoyés lorsque l'utilisateur final redémarre le jeu.

void Start() {
    // Since there is no try-block surrounding this call, if an exception is thrown,
    // it is considered unexpected.
    // Setting `Crashlytics.ReportUncaughtExceptionsAsFatal = true`
    // will ensure that such cases are reported as fatals.
    thirdPartyMethodThatMayThrow();
}

Inclure des rapports GWP-ASan pour déboguer les problèmes de corruption de mémoire

Pour les applications Android qui utilisent IL2CPP, Crashlytics peut vous aider à déboguer les plantages causés par des erreurs de mémoire native en collectant des rapports GWP-ASan. Ces erreurs liées à la mémoire peuvent être associées à une corruption de la mémoire au sein de votre application, qui est la principale cause de vulnérabilités de sécurité des applications.

  • Vous pouvez afficher ces données dans un nouvel onglet « Traces de la pile mémoire » lorsque vous cliquez sur les détails d'un problème dans le tableau de bord Crashlytics .

  • Vous pouvez également utiliser le nouveau signal et le nouveau filtre « Rapport GWP-ASan » pour visualiser rapidement tous les problèmes liés à ces données.

Vous pouvez obtenir des rapports sur la mémoire GWP-ASan si votre application utilise le dernier SDK Crashlytics pour Unity (v10.7.0+) et si GWP-ASan est explicitement activé (vous devez modifier votre manifeste d'application Android ). Si vous avez du code C++ dans votre application, vous pouvez tester votre configuration GWP-ASan à l'aide de l' exemple de code natif dans la documentation Android .

Ajouter des clés personnalisées

Les clés personnalisées vous aident à obtenir l'état spécifique de votre application menant à un crash. 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 les 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).

Lorsqu'elles sont appelées plusieurs fois, les nouvelles valeurs des clés existantes mettront à jour la valeur et seule la valeur la plus récente est capturée lorsqu'un crash est enregistré.

Crashlytics.SetCustomKey(string key, string value);

Ajouter des messages de journal personnalisés

Les messages enregistrés sont associés à vos données de crash et sont visibles dans le tableau de bord Firebase Crashlytics lors de l'affichage d'un crash spécifique.

Crashlytics.Log(string message);

Définir les identifiants des utilisateurs

Vous pouvez utiliser un numéro d'identification, un jeton ou une valeur hachée pour identifier de manière unique l'utilisateur final de votre application sans divulguer ni transmettre aucune de ses informations personnelles. Vous pouvez également effacer la valeur en la définissant sur une chaîne vide. Cette valeur est affichée dans le tableau de bord Firebase Crashlytics lors de l'affichage d'un crash spécifique.

Crashlytics.SetUserId(string identifier);

Activer les rapports d'adhésion

Par défaut, Crashlytics collecte automatiquement les rapports d'erreur pour tous les utilisateurs de votre application. Vous pouvez donner aux utilisateurs plus de contrôle sur les données qu'ils envoient en leur permettant de choisir de signaler les plantages.

Pour désactiver la collecte automatique et initialiser Crashlytics uniquement pour les utilisateurs sélectionnés, appelez le remplacement de la 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 collecter automatiquement des rapports. Pour désactiver le rapport automatique d'incidents, transmettez false comme valeur de remplacement. Lorsqu'elle est définie sur false , la nouvelle valeur ne s'applique pas jusqu'à la prochaine exécution de l'application.

Crashlytics.IsCrashlyticsCollectionEnabled = 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 d'accident agrégées pour identifier les tendances courantes en matière de stabilité. 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 .