ثبت شناسه پاسخ آگهی با Firebase Crashlytics

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

این راهنما نحوه ادغام Crashlytics را در پروژه Android Studio خود توضیح می دهد تا بتوانید شناسه های پاسخ آگهی را ثبت کنید. بعداً، وقتی خرابی‌های برنامه خود را عیب‌یابی می‌کنید، می‌توانید شناسه پاسخ آگهی را جستجو کنید و از مرکز بررسی آگهی درAdMobبرای پیدا کردن و مسدود کردن تبلیغات

مرحله 1: Firebase را به یک برنامه اندروید اضافه کنید

  1. اگر می‌خواهید با Firebase از یک برنامه تمیز وارد شوید، می‌توانید نمونه‌های Google Mobile Ads SDK را برای مخزن Android در GitHub دانلود یا کلون کنید. این راهنما به طور خاص ازنمونه بنر

    اگر قبلاً یک برنامه دارید، باید بتوانید با نام بسته برنامه خود به مراحل دیگر بروید. همین مراحل را می توان برای نمونه های دیگر در مخزن با انطباق های جزئی نیز اعمال کرد.

  2. برای استفاده از Firebase Crashlytics، باید یک پروژه Firebase ایجاد کنید و برنامه خود را به آن اضافه کنید. اگر قبلاً این کار را نکرده اید، یک پروژه Firebase ایجاد کنید. مطمئن شوید که برنامه خود را در آن ثبت کنید .

    1. در صفحه Crashlytics کنسول Firebase، روی Set up Crashlytics کلیک کنید.

    2. در صفحه نمایش داده شده، روی No > Set up a new Firebase app کلیک کنید.

  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 the Google Mobile Ads SDK
        implementation 'com.google.android.gms:play-services-ads:23.5.0'
    
        // Add the Firebase Crashlytics dependency.
        implementation 'com.google.firebase:firebase-crashlytics:19.2.1'
    }
    

    project/build.gradle

    buildscript {
        repositories {
            // ...
            // Add Google's Maven repository.
            google()
        }
    
        dependencies {
            // ...
    
            classpath 'com.google.gms:google-services:4.4.2'
    
            // Add the Fabric Crashlytics plugin.
            classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.2'
        }
    }
    
    allprojects {
        // ...
        repositories {
           // Check that Google's Maven repository is included (if not, add it).
           google()
    
           // ...
        }
    }
    
  4. برنامه خود را بسازید و اجرا کنید تا مطمئن شوید که Crashlytics به درستی پیکربندی شده است. پس از موفقیت، می توانید به داشبورد Crashlytics دسترسی پیدا کنید.

(اختیاری): تنظیمات خود را تست کنید

با اضافه کردن یک دکمه خرابی، می‌توانید با فشار دادن هر دکمه، به دلیل ایجاد خرابی برنامه، خرابی را مجبور کنید.

در اینجا مثالی آورده شده است که نشان می دهد چگونه می توان یک دکمه خرابی را در متد onCreate() یک Activity اضافه کرد:

MainActivity (گزیده)

جاوا

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 AdRequest.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(AdRequest.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، برنامه خود را روی یک شبیه ساز یا یک دستگاه متصل بسازید و اجرا کنید. پس از بارگیری برنامه، می توانید روی دکمه Crash کلیک کنید. برنامه را از دستگاه یا Android Studio مجدداً راه اندازی کنید تا گزارش خرابی در Crashlyics آپلود شود.

مرحله 2: شناسه پاسخ آگهی را ثبت کنید

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

کد زیر را به MyActivity.java خود اضافه کنید. اساساً، از تابع FirebaseCrashlytics.setCustomKey() در تابع callback 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 AdRequest.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(AdRequest.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 خود خواهید دید. توجه داشته باشید که برخی از کلیدها ممکن است تا یک ساعت طول بکشد تا در داشبورد شما قابل مشاهده باشند.