Firebase Crashlytics は、軽量のリアルタイム クラッシュ レポートツールです。Crashlytics を使用すると、アプリの安定性に関する問題を効率的に管理できます。また、クラッシュの高度な分類が行われ、クラッシュにつながる状況がハイライト表示されるので、トラブルシューティングに要する時間を節約できます。
このガイドでは、Crashlytics を Unity プロジェクトに統合して、広告レスポンス ID をログに記録する方法について説明します。アプリで発生したクラッシュをトラブルシューティングする際には、まず広告レスポンス ID を確認し、AdMob の広告レビュー センターで該当する広告を検索してブロックできます。
ステップ 1: Firebase を Unity アプリに追加する
Firebase Unity 統合ガイドに沿って Firebase Crashlytics を Unity に統合してください。
ステップ 2: 広告レスポンス ID をログに記録する
MonoBehaviour スクリプトを作成し、AdMob と Firebase SDK の両方を初期化します。 ブール値
isCrashlyticsInitialized
を使用して、Crashlytics が初期化されるタイミングを確認します。using GoogleMobileAds.Api; using Fabric.Crashlytics; ... public class GameObjectScript : MonoBehaviour { bool isCrashlyticsInitialized = false; public void Start() { .... // Initialize the Google Mobile Ads SDK. MobileAds.Initialize(initStatus => { }); .... // Initialize Firebase Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { Firebase.DependencyStatus dependencyStatus = task.Result; if (dependencyStatus == Firebase.DependencyStatus.Available) { Firebase.FirebaseApp app = Firebase.FirebaseApp.DefaultInstance; isCrashlyticsInitialized = true; } else { UnityEngine.Debug.LogError(System.String.Format( "Could not resolve all Firebase dependencies: {0}",dependencyStatus)); // Firebase Unity SDK is not safe to use here. } } } }
バナー広告をリクエストします。
using GoogleMobileAds.Api; using Fabric.Crashlytics; ... public class GameObjectScript : MonoBehaviour { public void Start() { ... // Initialize the Google Mobile Ads SDK. MobileAds.Initialize(initStatus => { }); // Initialize Firebase. Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { Firebase.DependencyStatus dependencyStatus = task.Result; if (dependencyStatus == Firebase.DependencyStatus.Available) { // Create and hold a reference to your FirebaseApp, // where app is a Firebase.FirebaseApp property of your // application class. // Crashlytics will use the DefaultInstance, as well; // this ensures that Crashlytics is initialized. Firebase.FirebaseApp app = Firebase.FirebaseApp.DefaultInstance; isCrashlyticsInitialized = true; } else { UnityEngine.Debug.LogError(System.String.Format( "Could not resolve all Firebase dependencies: {0}",dependencyStatus)); // Firebase Unity SDK is not safe to use here. } }); // Request Banner View. this.RequestBanner(); ... } public void RequestBanner() { #if UNITY_ANDROID string adUnitId = "ca-app-pub-3940256099942544/6300978111"; #elif UNITY_IPHONE string adUnitId = "ca-app-pub-1220882738324941/1255739139"; #else string adUnitId = "unexpected_platform"; #endif // Create a 320x50 banner at the top of the screen. this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Bottom); AdRequest request = new AdRequest(); this.bannerView.LoadAd(request); // Called when an ad request has successfully loaded. this.bannerView.OnAdLoaded += this.HandleOnAdLoaded; } }
ResponseInfo
オブジェクトOnAdLoaded
を取得し、Crashlytics でレスポンス ID をログに記録します。public void HandleOnAdLoaded(object sender, EventArgs args) { ResponseInfo responseInfo = this.bannerView.GetResponseInfo(); if (responseInfo != null) { String adResponseId = responseInfo.GetResponseId(); // Log to Crashlytics. if (isCrashlyticsInitialized) { Crashlytics.SetCustomKey("banner_ad_response_id", adResponseId); } } }
これで、Crashlytics ダッシュボードにあるクラッシュ セッションのキーセクションに最新の banner_ad_response_id
が表示されるようになります。キーによっては、ダッシュボードに表示されるまでに 4 時間ほどかかる場合があります。