Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

FirebaseCrashlyticsのクラッシュレポートをカスタマイズする

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

このガイドでは、Firebase Crashlytics SDK を使用してクラッシュ レポートをカスタマイズする方法について説明します。デフォルトでは、Crashlytics はアプリのすべてのユーザーのクラッシュ レポートを自動的に収集します (自動クラッシュ レポートをオフにして、代わりにユーザーのオプトイン レポートを有効にすることができます)。 Crashlytics には、すぐに使用できる 4 つのロギング メカニズムが用意されています。カスタム キーカスタム ログユーザー識別子キャッチされた例外です。

プレースホルダー90

カスタム キーを追加する

カスタム キーは、クラッシュにつながるアプリの特定の状態を取得するのに役立ちます。任意のキーと値のペアをクラッシュ レポートに関連付けてから、カスタム キーを使用して、Firebase コンソールでクラッシュ レポートを検索およびフィルタリングできます。

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

キーと値のペアを設定するには、 setCustomValueメソッドを使用します。例えば:

迅速

// 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

整数、ブール値、または浮動小数点数を設定するときは、値を@( 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"];

キーを呼び出して別の値に設定することで、既存のキーの値を変更することもできます。例えば:

迅速

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"];

唯一のパラメーターとして NSDictionary を指定してsetCustomKeysAndValuesメソッドを使用して、キーと値のペアを一括で追加します。

迅速

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];

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

クラッシュに至るイベントのコンテキストをより詳細に把握するために、カスタム Crashlytics ログをアプリに追加できます。 Crashlytics はログをクラッシュ データに関連付け、 Firebase コンソールの Crashlytics ページの [ログ] タブに表示します。

迅速

問題を特定するには、 log()またはlog(format:, arguments:)を使用します。メッセージを含む有用なログ出力を取得する場合は、 log()に渡すオブジェクトがCustomStringConvertibleプロパティに準拠している必要があります。 log()は、オブジェクトに対して定義した説明プロパティを返します。例えば:

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

.log(format:, arguments:)は、 getVaList()の呼び出しから返される値をフォーマットします。例えば:

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

log()またはlog(format:, arguments:)の使用方法の詳細については、Crashlyticsリファレンス ドキュメントを参照してください。

Objective-C

問題を特定するには、 logまたはlogWithFormatを使用します。メッセージを含む有用なログ出力を取得する場合は、いずれかのメソッドに渡すオブジェクトでdescriptionインスタンス プロパティをオーバーライドする必要があることに注意してください。例えば:

[[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];

logおよびlogWithFormatの使用方法の詳細については、Crashlyticsリファレンス ドキュメントを参照してください。

ユーザー識別子を設定する

問題を診断するには、どのユーザーが特定のクラッシュを経験したかを知ることが役立つことがよくあります。 Crashlytics には、クラッシュ レポートでユーザーを匿名で識別する方法が含まれています。

レポートにユーザー ID を追加するには、ID 番号、トークン、またはハッシュ値の形式で一意の識別子を各ユーザーに割り当てます。

迅速

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

Objective-C

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

設定後にユーザー識別子をクリアする必要がある場合は、値を空白文字列にリセットします。ユーザー ID をクリアしても、既存の Crashlytics レコードは削除されません。ユーザー ID に関連付けられたレコードを削除する必要がある場合は、 Firebase サポートにお問い合わせください。

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

デフォルトでは、Crashlytics はアプリのすべてのユーザーのクラッシュ レポートを自動的に収集します。ユーザーが送信するデータをより詳細に制御できるようにするには、自動レポートを無効にし、コードで選択した場合にのみデータを Crashlytics に送信することで、オプトイン レポートを有効にすることができます。

  1. Info.plistファイルに新しいキーを追加して、自動収集をオフにします。

    • キー: FirebaseCrashlyticsCollectionEnabled
    • 値: false
  2. 実行時に Crashlytics データ コレクションのオーバーライドを呼び出して、選択したユーザーのコレクションを有効にします。オーバーライド値はアプリの起動後も保持されるため、Crashlytics は自動的にレポートを収集できます。

    自動クラッシュ レポートをオプトアウトするには、オーバーライド値としてfalseを渡します。 falseに設定すると、新しい値はアプリの次回の実行まで適用されません。

    迅速

    Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)

    Objective-C

    [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];

Crash Insights データの管理

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

Crash Insights は、集約されたクラッシュ データを使用して、一般的な安定性の傾向を特定します。アプリのデータを共有したくない場合は、 Firebase コンソールの Crashlytics の問題リストの上部にあるCrash Insightsメニューから Crash Insights をオプトアウトできます。