検証環境
- Unity 2022.1.23f1
- Android 13
前提条件
Firebase Console にプロジェクトを作成済みで
「google-services.json」を Assets フォルダに導入済みだと想定しています
Android に Switch Platform
Android に Switch Platform しておきます
パッケージの入手
上記のページを開いて
- .tgz
- com.google.external-dependency-manager
- com.google.firebase.app
上記の 3 つのリンクをクリックして
- com.google.firebase.crashlytics-10.2.0.tgz
- com.google.external-dependency-manager-1.2.175.tgz
- com.google.firebase.app-10.2.0.tgz
これらの .tgz を入手して
Unity プロジェクトの「Packages」フォルダに追加して
同フォルダ内の「manifest.json」を開きます
{ "dependencies": { "com.google.external-dependency-manager": "file:./com.google.external-dependency-manager-1.2.175.tgz", "com.google.firebase.app": "file:./com.google.firebase.app-10.2.0.tgz", "com.google.firebase.crashlytics": "file:./com.google.firebase.crashlytics-10.2.0.tgz", ... } }
dependencies
内に上記の 3 行を追加して保存します
保存したら Unity を開いてインポート処理が終わるのを待ちます
インポートが完了して上記のダイアログが表示されたら「Disable」を押して
Unity メニューの
「Assets > External Dependency Manager > Android Resolver > Force Resolve」を押します
Resolving Android Dependencies が開始するので完了するまで待ちます
もし「Resolution Failed!(失敗)」というダイアログが表示されて
Console にエラーが表示された場合は
上記のページで紹介されている手順を踏んでから
Unity メニューの
「Assets > External Dependency Manager > Android Resolver > Force Resolve」を押して
Resolving Android Dependencies が完了するまで待ちます
「Resolution Succeeded(成功)」ウィンドウが表示されて
「Assets/Plugins/Android」フォルダ内に
上記のようにファイルが追加されていれば成功です
動作確認
using System; using Firebase; using UnityEngine; public class Example : MonoBehaviour { private async void Start() { var status = await FirebaseApp.CheckDependenciesAsync(); if ( status != DependencyStatus.Available ) return; _ = FirebaseApp.DefaultInstance; throw new Exception( "ピカチュウ" ); // 例外を投げる } }
上記の Example.cs を Unity プロジェクトに追加して
シーンのゲームオブジェクトにアタッチした状態で Android ビルドして、
アプリが起動して例外を投げる処理に到達したらアプリを再起動します*1
Firebase Console を開いて左メニューから
「リリースとモニタリング > Crashlytics」を選択します
すると、Example.cs で発生した例外が表示されていることが確認できます
例外を選択すると例外が発生したデバイスの情報やスタックトレースが確認できます
情報の付与
using System; using Firebase; using Firebase.Crashlytics; using UnityEngine; public class Example : MonoBehaviour { private async void Start() { var status = await FirebaseApp.CheckDependenciesAsync(); if ( status != DependencyStatus.Available ) return; _ = FirebaseApp.DefaultInstance; Crashlytics.SetUserId( "1234" ); // ★ Crashlytics.SetCustomKey( "player_id", "abcd" ); // ★ throw new Exception( "ピカチュウ" ); // 例外を投げる } }
Crashlytics.SetUserId
でユーザー ID を付与できます
Crashlytics.SetCustomKey
で独自の情報を付与できます
ユーザー ID を付与すると Firebase Console で検索できるようになります
付与した独自の情報は「鍵」タブで確認できるようになります
IL2CPP ビルドする場合
IL2CPP ビルドする場合は上記ページのステップ 3 と 4 の手順を踏むことで
より詳細な情報が Firebase Console 上で見られるようになるそうです
公式ドキュメント
関連記事
*1:Firebase Crashlytics ではアプリの起動時に例外の情報がサーバーに送信されます