[unity]Firebase Crashlytics でアプリクラッシュ時の通知を行う

アプリクラッシュ、なるべく早く検知して修正したいですよね。
とはいえ、どこでクラッシュしたか分からなければ、修正することもできない…。

Firebase Crashlytics を使うと、ユーザーがアプリクラッシュした際に、開発者が通知を受けることが出来ます。

なお、Firebase には他にも便利な機能が色々あるので、興味があればこちらもご覧ください。

Firebase フェーズ

Firebase の登録

最初のセットアップはどの機能でも共通です。詳しくはこちら。

Crashlytics を有効にする

この状態にしておく

設定ファイルをダウンロード

「設定ファイル」をダウンロードします。
2つのファイルは、この後作成する unity プロジェクトに含めるので、取っておいてください。

左上の歯車 - プロジェクトを設定

2つのファイルをダウンロード

unityフェーズ

基本的にはこちらの記事と一緒です。今回は dotnet4/FirebaseCrashlytics.unitypackage をインストールしてください。
また、設定ファイルを忘れずにいれておきましょう。

エラーを強制的に発生させる

ボタンクリックしたら以下のコードを実行するようにし、Android実機で実行します。
エラーボタンを押した後、一旦アプリを終了し、再起動してください。

Crashlytics はアプリを再起動するタイミングでサーバーに通知がいくようです。

Sample.cs:

public void ClickError()
{
    try
    {
        throw new System.ApplicationException("crash test");
    }
    catch (System.InvalidOperationException ex)
    {
        Crashlytics.LogException(ex);
    }
}

Firebase 確認フェーズ

無事サーバーに通知が行くと、以下のように表示されます。
イベントの種類は「クラッシュ」ではなく、今回は「非重大」にしてください。

sample.cs をクリックすると、次のように表示されます。

この不具合を修正した場合、右上の「閉じる」という青いボタンを押します。

すると、イベントは「解決した」扱いになり、次回からは表示されなくなります。

もう一度表示したい場合は「問題の状態 = "新規"」を、「解決済み / ミュート」にしてください。

その他の情報

送信される情報

〇 Unity API のエラー
〇 System.~Exception
✖ Unity.Debug.LogError()

Debug.LogError() を表示させたい場合は、Debug.LogError() のラッパーメソッドや logMessageReceived イベントなどで、throw new System.ApplicationException() する…等の手段が考えられます。

送信されるタイミング

エラー(クラッシュ)した後、一旦アプリを落として再起動するタイミング

クラッシュした後、アプリを再起動せず即削除すると、不具合は報告されない…。

よろしければ Twitter をフォローしてもらえると嬉しいです!

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA