การบันทึกรหัสข้อมูลการตอบกลับโฆษณาไปยัง Crashlytics

Firebase Crashlytics เป็นเครื่องมือรายงานข้อขัดข้องแบบเรียลไทม์ที่มีน้ำหนักเบา ซึ่งช่วยให้คุณจัดการปัญหาความเสถียรในแอปได้อย่างง่ายดาย Crashlytics ช่วยประหยัดเวลาในการแก้ปัญหาด้วยการจัดกลุ่มข้อขัดข้องอย่างชาญฉลาดและไฮไลต์สถานการณ์ที่ทําให้เกิดข้อขัดข้อง

คู่มือนี้อธิบายวิธีผสานรวม Crashlytics เข้ากับโปรเจ็กต์ Unity เพื่อให้คุณบันทึกรหัสการตอบสนองของโฆษณาได้ ต่อมา เมื่อแก้ปัญหาข้อขัดข้องในแอป คุณสามารถค้นหารหัสการตอบกลับโฆษณาและใช้ศูนย์ตรวจสอบโฆษณาใน AdMob เพื่อค้นหาและบล็อกโฆษณา

ขั้นตอนที่ 1: เพิ่ม Firebase ในแอป Unity

ทําตามคู่มือการผสานรวม Firebase Unity เพื่อผสานรวม Firebase Crashlytics เข้ากับ Unity

ขั้นตอนที่ 2: บันทึกรหัสการตอบกลับด้วยโฆษณา

  1. สร้างสคริปต์ MonoBehaviour และเริ่มต้นทั้ง SDK ของ AdMob และ Firebase ใช้บูลีน 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((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.
                }
            });
        }
    }
    
  2. ขอโฆษณาแบนเนอร์

    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);
        }
    }
    
  3. รับออบเจ็กต์ 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 โปรดทราบว่าคีย์บางรายการอาจใช้เวลาถึง 4 ชั่วโมงจึงจะปรากฏในแดชบอร์ด

รหัสคำตอบ