Firebase Crashlytics — это лёгкий инструмент для отчётности о сбоях в режиме реального времени, который упрощает управление проблемами стабильности в вашем приложении. Crashlytics экономит время на устранение неполадок, грамотно группируя сбои и выделяя обстоятельства, которые к ним привели.
В этом руководстве описывается, как интегрировать Crashlytics в ваш проект Unity для регистрации идентификаторов ответов на рекламу. Позже, при устранении сбоев в приложении, вы сможете найти идентификаторы ответов на рекламу и использовать Центр просмотра рекламы в AdMob для поиска и блокировки рекламы.
Шаг 1: Добавьте Firebase в ваше приложение Unity
Следуйте руководству по интеграции Firebase Unity , чтобы интегрировать Firebase Crashlytics в Unity.
Шаг 2: Зарегистрируйте идентификатор ответа на объявление
- Создайте скрипт MonoBehaviour и инициализируйте SDK AdMob и Firebase. Используйте логическое значение - isCrashlyticsInitializedдля отслеживания инициализации Crashlytics.- using GoogleMobileAds.Api; using Fabric.Crashlytics; ... public class GameObjectScript : MonoBehaviour { bool isCrashlyticsInitialized = false; public void Start() { .... // Initialize 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 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и зарегистрируйте идентификатор ответа в 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);
        }
    }
}
 Вот и всё! Теперь вы можете видеть последний banner_ad_response_id в разделе ключей краш-сессий на панели управления Crashlytics. Обратите внимание, что некоторые ключи могут появиться на панели управления в течение четырёх часов. 
