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

Crashlytics ダッシュボードで問題をクリックすると、詳細なイベント レポートが表示されます。これらのレポートをカスタマイズすると、アプリの動作や、Crashlytics に報告されるイベントに関する状況を詳細に把握できるようになります。

  • アプリで Google アナリティクス用の Firebase SDK を使用している場合、パンくずリストのログを自動的に取得します。これらのログで、Crashlytics がアプリ内で収集するイベントにつながるユーザー アクションを確認できます。

  • 自動クラッシュ レポートをオフにし、ユーザーに対してオプトイン レポートを有効にします。デフォルトでは、Crashlytics は自動的にアプリの全ユーザーを対象にクラッシュ レポートを収集します。

例外を報告する

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

例外が予想される場合は、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();
}

GWP-ASan レポートを追加してメモリ破損の問題をデバッグする

IL2CPP を使用する Android アプリの場合、Crashlytics で GWP-ASan レポートを収集すると、ネイティブ メモリエラーに起因するクラッシュのデバッグに役立つ情報が得られます。このようなメモリ関連のエラーは、アプリのセキュリティの脆弱性の主な原因である、アプリ内のメモリ破損に関連している可能性があります。

  • このデータは、Crashlytics ダッシュボードで問題の詳細をクリックすると、新しい [メモリ スタック トレース] タブで確認できます。

  • 新しい「GWP-ASan レポート」シグナルとフィルタを使用して、このデータに関連するすべての問題をすばやく表示することもできます。

アプリで最新の Crashlytics SDK for Unity(v10.7.0 以降)を使用している場合に、GWP-ASan を明示的に有効にすると、GWP-ASan メモリレポートを取得できます(Android アプリ マニフェストを変更する必要があります)。アプリに C++ コードが含まれている場合は、Android のドキュメントのネイティブ コードの例を使用して GWP-ASan の設定をテストできます。

カスタムキーを追加する

カスタムキーを使用して、クラッシュにつながったアプリの特定の状態を把握できます。任意の 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);

パンくずリストのログを取得する

パンくずリストのログで、クラッシュ イベント、非致命的イベント、ANR イベントに至るまでにユーザーがアプリで行った操作を詳しく把握できます。これらのログは、問題の再現とデバッグを行う際に役立ちます。

パンくずリストのログは Google アナリティクスを利用しているため、パンくずリストのログを取得するには、Firebase プロジェクトで Google アナリティクスを有効にして、Google アナリティクス用の Firebase SD をアプリに追加する必要があります。これらの要件を満たしている場合に、問題の詳細を表示すると、[ログ] タブにパンくずリストのログとイベントのデータが自動的に追加されます。

アナリティクス SDK は screen_view イベントを自動的にログに記録します。これにより、パンくずリストログに、クラッシュ イベント、非致命的イベント、ANR イベントの前の表示画面の一覧を示すことができます。screen_view パンくずリストログには firebase_screen_class パラメータが含まれます。

パンくずリストログには、ユーザーのセッション内で手動で記録したカスタム イベント(イベントのパラメータ データなど)も入力されます。このデータは、クラッシュ イベント、非致命的イベント、ANR イベントにつながる一連のユーザー操作を把握するのに役立ちます。

パンくずリストのログに入力されるデータを含め、Google アナリティクス データの収集と使用を制御できます。

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

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

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

Crashlytics.IsCrashlyticsCollectionEnabled = true

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

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

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