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 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
และบันทึกรหัสการตอบกลับไปยัง 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 ชั่วโมงจึงจะปรากฏในแดชบอร์ด