شناسه پاسخ به تبلیغات را در Crashlytics ثبت کنید

پلتفرم مورد نظر: iOS، Unity ، اندروید (قدیمی)

Firebase Crashlytics یک گزارشگر کرش سبک و بلادرنگ است که مدیریت مشکلات پایداری در برنامه شما را آسان می‌کند. Crashlytics با گروه‌بندی هوشمندانه کرش‌ها و برجسته کردن شرایطی که منجر به آنها می‌شود، در زمان عیب‌یابی شما صرفه‌جویی می‌کند.

این راهنما نحوه ادغام Crashlytics در پروژه اندروید استودیو شما را شرح می‌دهد تا بتوانید شناسه‌های پاسخ به تبلیغات را ثبت کنید. بعداً، هنگامی که در برنامه خود خرابی‌ها را عیب‌یابی می‌کنید، می‌توانید شناسه پاسخ به تبلیغات را جستجو کرده و از مرکز بررسی تبلیغات در Ad Manager برای یافتن و مسدود کردن تبلیغات استفاده کنید.

Step 1: Add Firebase to an Android application

  1. اگر می‌خواهید ثبت گزارش با Firebase را از یک برنامه‌ی خالی امتحان کنید، می‌توانید نمونه‌های Google Mobile Ads SDK (Legacy) برای مخزن اندروید در GitHub دانلود یا کلون کنید. این راهنما به‌طور خاص از مثال Banner استفاده می‌کند.

    اگر از قبل برنامه‌ای دارید، باید بتوانید با نام بسته برنامه خود به مراحل دیگر بروید. همین مراحل را می‌توان با کمی تغییر برای سایر مثال‌های موجود در مخزن نیز اعمال کرد.

  2. In order to use Firebase Crashlytics, you must create a Firebase project and add your app to it. If you haven't already, create a Firebase project. Make sure to register your app to it.

    1. In the Crashlytics page of the Firebase console, click Set up Crashlytics .

    2. در صفحه‌ای که ظاهر می‌شود، روی خیر > تنظیم یک برنامه جدید Firebase کلیک کنید.

  3. در build.gradle خود، وابستگی‌های Google Analytics، 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 Google Mobile Ads SDK (Legacy)
        implementation 'com.google.android.gms:play-services-ads:25.4.0'
    
        // Add the Firebase Crashlytics dependency.
        implementation 'com.google.firebase:firebase-crashlytics:20.1.0'
    }

    project/build.gradle

    buildscript {
        repositories {
            // ...
            // Add Google's Maven repository.
            google()
        }
    
        dependencies {
            // ...
    
            classpath 'com.google.gms:google-services:4.5.0'
    
            // Add the Fabric Crashlytics plugin.
            classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.7'
        }
    }
    
    allprojects {
        // ...
        repositories {
           // Check that Google's Maven repository is included (if not, add it).
           google()
    
           // ...
        }
    }
  4. Build and run your app to make sure to make sure Crashlytics is configured correctly. Once successful, you will be able to access the Crashlytics dashboard.

(اختیاری): تنظیمات خود را آزمایش کنید

با اضافه کردن یک دکمه‌ی کرش، می‌توانید با هر بار فشار دادن دکمه، باعث کرش شدن برنامه شوید.

Here's an example that shows how to add a crash button in the onCreate() method of an Activity :

MainActivity (excerpt)

جاوا

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));
}

کاتلین

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))
}

در اندروید استودیو، برنامه خود را روی یک شبیه‌ساز یا یک دستگاه متصل بسازید و اجرا کنید. پس از بارگذاری برنامه، می‌توانید روی دکمه Crash کلیک کنید. برنامه را از دستگاه یا اندروید استودیو مجدداً اجرا کنید تا گزارش خرابی در Crashlyics بارگذاری شود.

Step 2: Log the ad response ID

اگر چندین تبلیغ را بارگذاری می‌کنید و آنها را در زمان‌های مختلف نمایش می‌دهید، ایده خوبی است که هر شناسه پاسخ تبلیغ را با یک کلید جداگانه ثبت کنید. برای مثال، این راهنما از مثالی استفاده می‌کند که فقط یک تبلیغ بنری دارد. از این رو، شناسه پاسخ تبلیغ را به عنوان کلید banner_ad_response_id در قطعه کد زیر ثبت می‌کنیم. در واقع می‌توانید چندین جفت کلید/مقدار سفارشی در Firebase Crashlytics برای انواع مختلف تبلیغ و رویدادهای تبلیغ ایجاد کنید (برای چرخه عمر تبلیغ AdListener مراجعه کنید). برای اطلاعات بیشتر در مورد ثبت سفارشی ، به بخش گزارش‌های خرابی Firebase Crashlytics خود مراجعه کنید.

کد زیر را به MyActivity.java خود اضافه کنید. اساساً، این کد از تابع FirebaseCrashlytics.setCustomKey() در تابع فراخوانی onAdLoaded() استفاده می‌کند تا مطمئن شود که تبلیغ قبل از تلاش برای فراخوانی getResponseInfo() بارگذاری شده است.

جاوا

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));
}

کاتلین

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 خود مشاهده خواهید کرد. توجه داشته باشید که ممکن است برخی از کلیدها تا یک ساعت طول بکشد تا در داشبورد شما قابل مشاهده شوند.