تسجيل رقم تعريف استجابة الإعلان باستخدام Firebase Crashlytics

اختيار النظام الأساسي: Android iOS Unity

‫Firebase Crashlytics هي أداة خفيفة الوزن لإعداد تقارير الأعطال في الوقت الفعلي، وتسهّل عليك إدارة مشاكل الثبات في تطبيقك. توفّر عليك Crashlytics الوقت المستغرَق في تحديد المشاكل وحلّها من خلال تجميع الأعطال بذكاء وإبراز الظروف التي أدّت إلى حدوثها.

يوضّح هذا الدليل كيفية دمج Crashlytics في مشروعك على "استوديو Android" حتى تتمكّن من تسجيل أرقام تعريف استجابة الإعلان. في وقت لاحق، عند تحديد المشاكل وحلّها بشأن الأعطال في تطبيقك، يمكنك البحث عن رقم تعريف استجابة الإعلان واستخدام "مركز مراجعة الإعلانات" في مدير الإعلانات للعثور على الإعلانات وحظرها.

الخطوة 1: إضافة Firebase إلى تطبيق Android

  1. إذا أردت تجربة تسجيل الدخول باستخدام Firebase من تطبيق جديد، يمكنك تنزيل أو استنساخ أمثلة حزمة تطوير البرامج (SDK) "إعلانات Google على الأجهزة الجوّالة" لنظام التشغيل Android من المستودع على GitHub. يستخدم هذا الدليل مثال البانر على وجه التحديد.

    إذا كان لديك تطبيق حاليًا، من المفترض أن تتمكّن من الانتقال إلى الخطوات الأخرى باستخدام اسم حزمة تطبيقك. يمكن أيضًا تطبيق الخطوات نفسها على الأمثلة الأخرى في المستودع مع إجراء تعديلات بسيطة.

  2. لاستخدام Firebase Crashlytics، عليك إنشاء مشروع على Firebase وإضافة تطبيقك إليه. أنشئ مشروعًا على Firebase، إذا لم يسبق لك ذلك. احرص على تسجيل تطبيقك في هذا الحساب.

    1. في صفحة Crashlytics ضِمن وحدة تحكّم Firebase، انقر على إعداد Crashlytics.

    2. في الشاشة التي تظهر، انقر على لا > إعداد تطبيق جديد على Firebase.

  3. في ملف build.gradle، أضِف التبعيات الخاصة بخدمات "إحصاءات Google" وFabric وCrashlytics.

    app/build.gradle

    apply plugin: 'com.android.application'
    apply plugin: 'com.google.gms.google-services'
    
    // Add the Fabric plugin
    apply plugin: 'io.fabric'
    
    dependencies {
        // ...
    
        // Add the Google Mobile Ads SDK
        implementation 'com.google.android.gms:play-services-ads:24.5.0'
    
        // Add the Firebase Crashlytics dependency.
        implementation 'com.google.firebase:firebase-crashlytics:20.0.1'
    }

    project/build.gradle

    buildscript {
        repositories {
            // ...
            // Add Google's Maven repository.
            google()
        }
    
        dependencies {
            // ...
    
            classpath 'com.google.gms:google-services:4.4.3'
    
            // Add the Fabric Crashlytics plugin.
            classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.6'
        }
    }
    
    allprojects {
        // ...
        repositories {
           // Check that Google's Maven repository is included (if not, add it).
           google()
    
           // ...
        }
    }
  4. أنشئ تطبيقك وشغِّله للتأكّد من إعداد Crashlytics بشكل صحيح. بعد إكمال عملية الربط بنجاح، سيصبح بإمكانك الوصول إلى لوحة بيانات Crashlytics.

(اختياري): اختبار عملية الإعداد

من خلال إضافة زر تعطُّل، يمكنك فرض حدوث تعطُّل للتطبيق عند كل نقرة على الزر.

في ما يلي مثال يوضّح كيفية إضافة زر تعطُّل في طريقة onCreate() الخاصة بـ Activity:

MainActivity (مقتطف)

Java

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_my);

  // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in
  // values/strings.xml.
  adView = findViewById(R.id.ad_view);

  // Start loading the ad in the background.
  adView.loadAd(new AdManagerAdRequest.Builder().build());

  // Add a crash button.
  Button crashButton = new Button(this);
  crashButton.setText("Crash!");
  crashButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
      throw new RuntimeException("Test Crash"); // Force a crash
    }
  });

  addContentView(crashButton, new ViewGroup.LayoutParams(
      ViewGroup.LayoutParams.MATCH_PARENT,
      ViewGroup.LayoutParams.WRAP_CONTENT));
}

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  setContentView(R.layout.activity_my)

  // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in
  // values/strings.xml.
  adView = findViewById(R.id.ad_view)

  // Start loading the ad in the background.
  adView.loadAd(AdManagerAdRequest.Builder().build())

  // Add a crash button.
  val crashButton = Button(this)
  crashButton.text = "Crash!"
  crashButton.setOnClickListener {
    throw RuntimeException("Test Crash") // Force a crash
  }

  addContentView(crashButton, ViewGroup.LayoutParams(
      ViewGroup.LayoutParams.MATCH_PARENT,
      ViewGroup.LayoutParams.WRAP_CONTENT))
}

في Android Studio، أنشئ تطبيقك وشغِّله على محاكي أو جهاز متصل. بعد تحميل التطبيق، يمكنك النقر على الزر تعطُّل. أعِد تشغيل التطبيق من الجهاز أو Android Studio ليتم تحميل سجلّ الأعطال إلى Crashlytics.

الخطوة 2: تسجيل رقم تعريف استجابة الإعلان

في حال تحميل عدّة إعلانات وعرضها في أوقات مختلفة، ننصحك بتسجيل رقم تعريف كل استجابة إعلان باستخدام مفتاح منفصل. على سبيل المثال، يستخدم هذا الدليل مثالاً يتضمّن إعلان بانر واحدًا فقط. لذلك، نسجّل رقم تعريف استجابة الإعلان كمفتاح banner_ad_response_id في المقتطف التالي. يمكنك إنشاء أزواج متعدّدة من المفاتيح والقيم المخصّصة في Firebase Crashlytics لأنواع الإعلانات وأحداث الإعلانات المختلفة (راجِع AdListener للتعرّف على دورة حياة الإعلان). يمكنك الانتقال إلى تخصيص تقارير الأعطال في Firebase Crashlytics للحصول على مزيد من المعلومات حول التسجيل المخصّص.

أضِف الرمز التالي إلى MyActivity.java. في الأساس، تستخدم هذه الميزة الدالة FirebaseCrashlytics.setCustomKey() في دالة رد الاتصال onAdLoaded() لضمان تحميل الإعلان قبل محاولة استدعاء getResponseInfo().

Java

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_my);

  // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in
  // values/strings.xml.
  adView = findViewById(R.id.ad_view);

  adView.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
      String adResponseId = adView.getResponseInfo().getResponseId();
      FirebaseCrashlytics.getInstance().setCustomKey(
          "banner_ad_response_id", adResponseId);
    }
  });

  // Start loading the ad in the background.
  adView.loadAd(new AdManagerAdRequest.Builder().build());

  // Add a crash button.
  Button crashButton = new Button(this);
  crashButton.setText("Crash!");
  crashButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
      throw new RuntimeException("Test Crash"); // Force a crash
    }
  });

  addContentView(crashButton, new ViewGroup.LayoutParams(
      ViewGroup.LayoutParams.MATCH_PARENT,
      ViewGroup.LayoutParams.WRAP_CONTENT));
}

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  setContentView(R.layout.activity_my)

  // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in
  // values/strings.xml.
  adView = findViewById(R.id.ad_view)

  adView.adListener = object : AdListener() {
    override fun onAdLoaded() {
      mAdView.responseInfo?.responseId?.let { adResponseId ->
          FirebaseCrashlytics.getInstance().setCustomKey(
              "banner_ad_response_id", adResponseId)
      }
    }
  }

  // Start loading the ad in the background.
  adView.loadAd(AdManagerAdRequest.Builder().build())

  // Add a crash button.
  val crashButton = Button(this)
  crashButton.text = "Crash!"
  crashButton.setOnClickListener {
    throw RuntimeException("Test Crash") // Force a crash
  }

  addContentView(crashButton, ViewGroup.LayoutParams(
      ViewGroup.LayoutParams.MATCH_PARENT,
      ViewGroup.LayoutParams.WRAP_CONTENT))
}

تهانينا! سيظهر لك الآن أحدث banner_ad_response_id في القسم الرئيسي لجلسات الأعطال على لوحة بيانات Crashlytics. يُرجى العِلم أنّ ظهور بعض المفاتيح في لوحة البيانات قد يستغرق مدة تصل إلى ساعة.