Crashlytics-এ বিজ্ঞাপন রেসপন্স আইডি লগ করা

Firebase Crashlytics হল একটি লাইটওয়েট, রিয়েল-টাইম ক্র্যাশ রিপোর্টার যা আপনার অ্যাপে স্টেবিলিটি সংক্রান্ত সমস্যা সহজে ম্যানেজ করতে সাহায্য করে। Crashlytics ক্র্যাশগুলিকে বুদ্ধিমত্তার সাথে গ্রুপ করে এবং যেসব পরিস্থিতির কারণে সেগুলি ঘটে তা হাইলাইট করে আপনার সমস্যার সমাধান করার সময় বাঁচায়।

এই নির্দেশিকায় আপনার Android Studio প্রোজেক্টে Crashlytics কীভাবে ইন্টিগ্রেট করবেন তা বর্ণনা করা হয়েছে যাতে আপনি বিজ্ঞাপন রেসপন্স আইডি লগ করতে পারেন। পরে, আপনার অ্যাপ ক্র্যাশ করার সমস্যার সমাধান করার সময়, আপনি বিজ্ঞাপন রেসপন্স আইডি দেখতে এবং বিজ্ঞাপন খুঁজে পেতে ও ব্লক করতে AdMob -এ বিজ্ঞাপন পর্যালোচনা কেন্দ্র ব্যবহার করতে পারবেন।

ধাপ ১: Android অ্যাপ্লিকেশনে Firebase যোগ করা

  1. আপনি যদি কোনও ক্লিন অ্যাপ থেকে Firebase-এর মাধ্যমে লগ করার চেষ্টা করতে চান, তাহলে GitHub-এ রিপোজিটরি থেকে Android-এর জন্য Google Mobile Ads SDK (Legacy) উদাহরণ ডাউনলোড বা ক্লোন করতে পারেন। এই নির্দেশিকা বিশেষভাবে ব্যানারের উদাহরণ ব্যবহার করে।

    আপনার আগে থেকেই কোনও অ্যাপ থাকলে, অ্যাপের প্যাকেজের নাম ব্যবহার করে আপনি অন্যান্য ধাপগুলি সম্পূর্ণ করতে পারবেন। একই ধাপগুলি সামান্য পরিবর্তন করে রিপোজিটরির অন্যান্য উদাহরণের ক্ষেত্রেও প্রয়োগ করা যেতে পারে।

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

    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.8'
        }
    }
    
    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 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-তে, এমুলেটর বা কানেক্ট করা ডিভাইসে আপনার অ্যাপ তৈরি ও রান করুন। অ্যাপ লোড হওয়ার পরে, আপনি ক্র্যাশ বোতামে ক্লিক করতে পারবেন। ডিভাইস বা Android Studio থেকে অ্যাপটি আবার চালু করুন যাতে ক্র্যাশ লগ Crashlyics-এ আপলোড করা যায়।

ধাপ ২: বিজ্ঞাপন রেসপন্স আইডি লগ করুন

আপনি যদি একাধিক বিজ্ঞাপন লোড করেন এবং সেগুলি আলাদা আলাদা সময়ে দেখান, তাহলে প্রতিটি বিজ্ঞাপন রেসপন্স আইডি আলাদা কী দিয়ে লগ করা ভালো। যেমন, এই গাইডে এমন একটি উদাহরণ ব্যবহার করা হয়েছে যেখানে শুধু একটি ব্যানার বিজ্ঞাপন আছে। তাই, আমরা নিম্নলিখিত স্নিপেটে 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 দেখতে পাবেন। মনে রাখবেন যে কিছু কী আপনার ড্যাশবোর্ডে দৃশ্যমান হতে এক ঘণ্টা পর্যন্ত সময় লাগতে পারে।