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

प्लैटफ़ॉर्म चुनें: Android iOS Unity

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

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

पहला चरण: किसी 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: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 डैशबोर्ड को ऐक्सेस किया जा सकेगा.

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

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

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

MainActivity (excerpt)

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

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(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 में, अपने ऐप्लिकेशन को किसी एम्युलेटर या कनेक्ट किए गए डिवाइस पर बनाएं और चलाएं. ऐप्लिकेशन लोड होने के बाद, क्रैश बटन पर क्लिक किया जा सकता है. क्रैश लॉग को Crashlyics पर अपलोड करने के लिए, डिवाइस या 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 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));
}

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

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