Firebase Crashlytics는 앱의 안정성 문제를 쉽게 관리할 수 있는 간단한 실시간 비정상 종료 보고 도구입니다. Crashlytics를 사용하면 비정상 종료를 지능적으로 분류하고 비정상 종료로 이어지는 상황을 식별하여 문제 해결 시간을 단축할 수 있습니다.
이 가이드에서는 Crashlytics를 Unity 프로젝트에 통합하여 광고 응답 ID를 로깅하는 방법을 설명합니다. 나중에 앱의 비정상 종료 문제를 해결할 때 광고 응답 ID를 찾아 AdMob의 광고 심사 센터를 사용하여 광고를 찾고 차단할 수 있습니다.
1단계: Unity 앱에 Firebase 추가
Firebase Unity 통합 가이드에 따라 Firebase Crashlytics를 Unity에 통합합니다.
2단계: 광고 응답 ID 로깅
MonoBehaviour 스크립트를 만들고 AdMob과 Firebase SDK를 모두 초기화합니다. Crashlytics의 초기화 시점을 모니터링하려면 부울
isCrashlyticsInitialized
를 사용합니다.using GoogleMobileAds.Api; using Fabric.Crashlytics; ... public class GameObjectScript : MonoBehaviour { bool isCrashlyticsInitialized = false; public void Start() { .... // Initialize the Google Mobile Ads SDK. MobileAds.Initialize((InitializationStatus 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((InitializationStatus 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); // Called when an ad request has successfully loaded. this.bannerView.OnAdLoaded += this.HandleOnAdLoaded; AdRequest request = new AdRequest(); this.bannerView.LoadAd(request); } }
ResponseInfo
객체OnAdLoaded
를 가져오고 응답 ID를 Crashlytics에 로깅합니다.
public void HandleOnAdLoaded()
{
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시간이 걸릴 수 있습니다.