最初に
今回はユーザーさんからのクラッシュの問い合わせをCrashlyticsを使い
どうしたら素早くやバグを解決できるか考えてみました。
デバッグって大変ですよね。
導入自体については、公式のドキュメントをご確認ください。
https://firebase.google.com/docs/crashlytics?hl=ja
今回は、Android javaでのコードを記載しました。
ユーザーID検索
ユーザーがログインした時などにユーザーの情報をセットしていくと、文字列をいれて送ることができます。
Crashlytics.setUserIdentifier("userid-12345678910");
Crashlytics.setUserEmail("userid-email");
Crashlytics.setUserName("userid-name");
そうするとこれはクラッシュ詳細の「データ」のタブに表示されます。
この画像の右下あたりのユーザーの部分です。
実はこの値TOPの右下の「ユーザー検索」から検索ができて検索してみると
Email,Name,Identiferどれも横断で部分一致で検索してくれます。
どのユーザーがどのクラッシュをしたかが特定できます。
ログとキー
これを使うことにより、クラッシュする前にどの画面を経由したか?が分かります。
ログ
// 各ActivityやFragmentでそれぞれ文字列を決めて、logにセットしていきます。
Crashlytics.log("******");
セットした値は、最終的にクラッシュしたクラッシュ詳細の「ログ」のタブに上から時系列順に並びます。
例えば以下は、1-aはAのActivity、2-bはBのActivityでCrashlytics.logを呼んでBでクラッシュさせたものです。
そのため、どこの画面から遷移してクラッシュしたか?
クラッシュする前にどの画面を通ったか?などを確認することができます。
キー
Crashlytics.setInt("1-a", 1);
Crashlytics.setBool("1-a", true);
Crashlytics.setDouble("1-a", 1);
Crashlytics.setFloat("1-a", 1);
Crashlytics.setLong("1-a", 1);
Crashlytics.setString("1-a", "1-a");
key/valueでデータをセットして送る事もできます。
クラッシュ詳細の「鍵」のタブに集計されます。(翻訳ミスってる説)
こちらの上から順に並んでいきます。
そして便利なのが「キー」をフィルタしますの部分に文字入力すると、そのキーのみの一覧表示ができます。
このログとキーについては、よく考えて設計すると、デバッグにかなり効果を発揮しそうです。
非重大
想定されるExceptionが起こった時、それをそのまま渡して集計ができます。
「クラッシュ」ではなく「非重大」の方にまとまります。
Crashlytics.logException(Exception);
// 自分でExceptionのインスタンスを作って渡す事もできます。
Crashlytics.logException(
new IllegalArgumentException("IllegalArgumentExceptionのテストです")
);
こっちは、左上の「フィルタ」をクリックして非重大に切り替えて確認しましょう。
こちら上に記載したユーザー情報を入れる、ログやキーを入れる
をしておくと非重大の方の詳細にも同じように反映されます。