Firebase Crashlytics से विज्ञापन रिस्पॉन्स आईडी को लॉग करना

Firebase Crashlytics एक हल्का और रीयल टाइम ऐप्लिकेशन बंद होने की रिपोर्ट देने वाला टूल है. इसकी मदद से, अपने ऐप्लिकेशन में स्थिरता से जुड़ी समस्याओं को आसानी से मैनेज किया जा सकता है. Crashlytics, ऐप्लिकेशन बंद होने की समस्याओं को स्मार्ट तरीके से ग्रुप में बांटता है और उन स्थितियों को हाइलाइट करता है जिनकी वजह से ऐप्लिकेशन बंद होता है. इससे, समस्या हल करने में लगने वाला समय बचता है.

इस गाइड में, Android Studio प्रोजेक्ट में Crashlytics को इंटिग्रेट करने का तरीका बताया गया है, ताकि विज्ञापन रिस्पॉन्स आईडी को लॉग किया जा सके. बाद में, अपने ऐप्लिकेशन के क्रैश होने की समस्या हल करते समय, विज्ञापन रिस्पॉन्स आईडी देखा जा सकता है. साथ ही, विज्ञापनों को ढूंढने और ब्लॉक करने के लिए, Ad Manager में विज्ञापन समीक्षा केंद्र का इस्तेमाल किया जा सकता है.

पहला चरण: किसी Android ऐप्लिकेशन में Firebase जोड़ना

  1. अगर आपको किसी नए ऐप्लिकेशन से Firebase की मदद से लॉग इन करने की कोशिश करनी है, तो GitHub पर Android के लिए Google Mobile Ads SDK टूल के उदाहरणों को डाउनलोड या क्लोन किया जा सकता है. ये उदाहरण, रिपॉज़िटरी में मौजूद हैं. इस गाइड में खास तौर पर, बैनर का उदाहरण.

    अगर आपके पास पहले से कोई ऐप्लिकेशन है, तो आपको अपने ऐप्लिकेशन के पैकेज के नाम के साथ, अन्य चरणों को पूरा करने में मदद मिलेगी. इन चरणों को थोड़े बदलावों के साथ, रिपॉज़िटरी में मौजूद अन्य उदाहरणों पर भी लागू किया जा सकता है.

  2. Firebase Crashlytics का इस्तेमाल करने के लिए, आपको Firebase प्रोजेक्ट बनाना होगा और उसमें अपना ऐप्लिकेशन जोड़ना होगा. अगर आपने पहले से कोई Firebase प्रोजेक्ट नहीं बनाया है, तो एक नया प्रोजेक्ट बनाएं. पक्का करें कि आपने अपने ऐप्लिकेशन को उसमें रजिस्टर किया हो.

    1. Firebase कंसोल के Crashlytics पेज में, 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 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 डैशबोर्ड को ऐक्सेस करने का विकल्प होगा.

(ज़रूरी नहीं): अपने सेटअप की जांच करना

क्रैश बटन जोड़कर, हर बटन दबाने पर ऐप्लिकेशन को क्रैश किया जा सकता है.

यहां एक उदाहरण दिया गया है, जिसमें Activity के onCreate() तरीके में क्रैश बटन जोड़ने का तरीका बताया गया है:

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 में, एम्युलेटर या कनेक्ट किए गए डिवाइस पर अपना ऐप्लिकेशन बनाएं और चलाएं. ऐप्लिकेशन लोड होने के बाद, क्रैश करें बटन पर क्लिक करें. क्रैश लॉग को Crashlytics पर अपलोड करने के लिए, डिवाइस या Android Studio से ऐप्लिकेशन को फिर से लॉन्च करें.

दूसरा चरण: विज्ञापन रिस्पॉन्स आईडी को लॉग करना

अगर एक से ज़्यादा विज्ञापन लोड किए जाते हैं और उन्हें अलग-अलग समय पर दिखाया जाता है, तो हर विज्ञापन रिस्पॉन्स आईडी को अलग-अलग कुंजी के साथ लॉग करना एक अच्छा विचार है. उदाहरण के लिए, इस गाइड में एक ऐसे उदाहरण का इस्तेमाल किया गया है जिसमें सिर्फ़ एक बैनर विज्ञापन है. इसलिए, हम नीचे दिए गए स्निपेट में विज्ञापन रिस्पॉन्स आईडी को banner_ad_response_id बटन के तौर पर लॉग करते हैं. हां, अलग-अलग विज्ञापन टाइप और विज्ञापन इवेंट के लिए, Firebase Crashlytics में कई कस्टम की / वैल्यू पेयर बनाए जा सकते हैं. विज्ञापन के लाइफ़ साइकल के बारे में जानने के लिए, AdListener देखें. कस्टम लॉगिंग के बारे में ज़्यादा जानने के लिए, Firebase Crashlytics की क्रैश रिपोर्ट को पसंद के मुताबिक बनाएं पर जाएं.

अपने MyActivity.java में यह कोड जोड़ें. असल में, यह onAdLoaded() कॉलबैक फ़ंक्शन में FirebaseCrashlytics.setCustomKey() फ़ंक्शन का इस्तेमाल करता है, ताकि यह पक्का किया जा सके कि 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))
}

बधाई हो! अब आपको अपने Crashlytics डैशबोर्ड पर, क्रैश सेशन के मुख्य सेक्शन में सबसे हाल ही का banner_ad_response_id दिखेगा. ध्यान दें कि कुछ कुंजियों को आपके डैशबोर्ड में दिखने में एक घंटा लग सकता है.