Firebase Crashlytics のクラッシュ レポートのカスタマイズ

このガイドでは、Firebase Crashlytics SDK を使用してクラッシュ レポートをカスタマイズする方法を説明します。デフォルトでは、Crashlytics は自動的にアプリの全ユーザーを対象にクラッシュ レポートを収集します(自動クラッシュ レポートを無効にして、ユーザーに対してオプトイン レポートを有効にすることもできます)。Crashlytics には、カスタムキーカスタムログユーザー ID検出された例外という、設定不要な 4 つのロギング メカニズムが用意されています。

例外を報告する

キャッチされた例外を報告する

例外が予想される場合は、Crashlytics SDK で非致命的なイベントとして報告できます。これらのイベントはデバイスにロギングされ、次の致命的なイベント レポートとともに、またはエンドユーザーがゲームを再起動したときに送信されます。

C# で例外をログに記録するには、次の方法を使用します。

Crashlytics.LogException(Exception ex);

予想される例外をゲームの try / catch ブロックに記録できます。

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

キャッチされなかった例外を報告する

ゲームがクラッシュしないキャッチされない例外(ゲームロジックでキャッチされていない C# 例外など)では、Unity で Crashlytics を初期化するときに、Crashlytics.ReportUncaughtExceptionsAsFatal プロパティとして true に設定することで、致命的なイベントを報告できます。これらのイベントは、エンドユーザーがゲームを再起動しなくても、Crashlytics にリアルタイムで報告されます。

このキャッチされなかった例外を致命的なイベントとして報告すると、クラッシュの影響を受けていないユーザー統計情報と、ベロシティ アラートにカウントされます。

なお、ネイティブ クラッシュは常に致命的なイベントとして報告されます。これらのイベントはデバイスにロギングされ、エンドユーザーがゲームを再起動すると送信されます。

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

カスタムキーを追加する

カスタムキーを使用して、クラッシュにつながったアプリの特定の状態を把握できます。任意の Key-Value ペアをクラッシュ レポートに関連付けてから、Firebase コンソールでカスタムキーを使用してクラッシュ レポートを検索、フィルタできます。

  • Crashlytics ダッシュボードで、カスタムキーと一致する問題を検索できます。
  • コンソールで特定の問題を確認するには、各イベントに関連付けられているカスタムキーを表示します([キー] サブタブ)。カスタムキーでイベントをフィルタすることもできます(ページ上部にある [フィルタ] メニュー)。

2 回以上呼び出すと、既存のキーに新しい値が設定されて元の値が更新されるため、クラッシュを記録したときに最新の値だけが検出されます。

Crashlytics.SetCustomKey(string key, string value);

カスタムログ メッセージを追加する

ログに記録されたメッセージはクラッシュ データに関連付けられていて、特定のクラッシュを表示しているときに Firebase Crashlytics ダッシュボードに表示されます。

Crashlytics.Log(string message);

ユーザー ID を設定する

ID 番号、トークン、ハッシュ値を使用すると、個人情報を開示したり送信したりしなくても、アプリケーションのエンドユーザーを一意に識別できます。ユーザー ID に空白の文字列を設定して、値を消去することもできます。この値は、特定のクラッシュを表示しているときに Firebase Crashlytics ダッシュボードに表示されます。

Crashlytics.SetUserId(string identifier);

オプトイン レポートを有効にする

デフォルトでは、Crashlytics は自動的にアプリの全ユーザーを対象にクラッシュ レポートを収集します。レポートのクラッシュを許可することで、ユーザーが送信するデータをより詳細に管理できます。

自動収集を無効にし、選択したユーザーに対してのみ Crashlytics を初期化するには、実行時に Crashlytics データ収集のオーバーライドを呼び出します。オーバーライド値はアプリが再起動されても維持されるため、Crashlytics は自動的にレポートを収集できます。自動クラッシュ レポートを無効にするには、オーバーライド値として false を渡します。false に設定された場合、この新しい値はアプリが次回実行されるまで適用されません。

Crashlytics.IsCrashlyticsCollectionEnabled = true

クラッシュ分析データを管理する

クラッシュ分析では、匿名化されたスタック トレースと他の Firebase アプリのトレースを比較して、発生した問題がより大きい傾向の一部であるかどうかが通知されるので、問題の解決に役立ちます。また、多くの問題について、クラッシュのデバッグに役立つリソースも提供されます。

クラッシュ分析は、集計されたクラッシュ データを使用して、一般的な安定性の傾向を特定します。アプリのデータを共有しない場合は、Firebase コンソールの Crashlytics 問題リストの最上部にある [クラッシュ分析情報の設定] メニューからクラッシュ分析を無効にできます。