Crashlytics-এ বিজ্ঞাপন প্রতিক্রিয়া আইডি লগ করুন

প্ল্যাটফর্ম নির্বাচন করুন: অ্যান্ড্রয়েড আইওএস ইউনিটি

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

এই নির্দেশিকায় বর্ণনা করা হয়েছে কীভাবে আপনার অ্যান্ড্রয়েড স্টুডিও প্রজেক্টে ক্র্যাশলিটিক্স (Crashlytics) যুক্ত করবেন, যাতে আপনি বিজ্ঞাপনের প্রতিক্রিয়া আইডি (ad response ID) লগ করতে পারেন। পরবর্তীতে, যখন আপনি আপনার অ্যাপের ক্র্যাশ সমস্যা সমাধান করবেন, তখন আপনি বিজ্ঞাপনের প্রতিক্রিয়া আইডিটি খুঁজে বের করতে পারবেন এবং অ্যাডমব (AdMob) -এর অ্যাড রিভিউ সেন্টার (Ad Review Center) ব্যবহার করে বিজ্ঞাপনগুলো খুঁজে বের করে ব্লক করতে পারবেন।

ধাপ ১: একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশনে ফায়ারবেস যুক্ত করুন

  1. আপনি যদি একটি নতুন অ্যাপ থেকে ফায়ারবেস দিয়ে লগিং চেষ্টা করতে চান, তাহলে আপনি গিটহাব থেকে অ্যান্ড্রয়েডের জন্য Google Mobile Ads SDK উদাহরণগুলির রিপোজিটরি ডাউনলোড বা ক্লোন করতে পারেন। এই নির্দেশিকাটি বিশেষভাবে ব্যানার উদাহরণটি ব্যবহার করে।

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

  2. Firebase Crashlytics ব্যবহার করার জন্য, আপনাকে একটি Firebase প্রজেক্ট তৈরি করতে হবে এবং তাতে আপনার অ্যাপটি যুক্ত করতে হবে। যদি আগে থেকে না করে থাকেন, তাহলে একটি Firebase প্রজেক্ট তৈরি করুন। আপনার অ্যাপটি এতে রেজিস্টার করা নিশ্চিত করুন।

    1. Firebase কনসোলের Crashlytics পৃষ্ঠায়, ‘Set up Crashlytics’-এ ক্লিক করুন।

    2. যে স্ক্রিনটি আসবে, সেখানে No > Set up a new Firebase app -এ ক্লিক করুন।

  3. আপনার build.gradle ফাইলে Google Analytics, Fabric, এবং Crashlytics-এর ডিপেন্ডেন্সিগুলো যোগ করুন।

    অ্যাপ/বিল্ড.গ্রেডল

    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
        implementation 'com.google.android.gms:play-services-ads:25.1.0'
    
        // Add the Firebase Crashlytics dependency.
        implementation 'com.google.firebase:firebase-crashlytics:20.0.4'
    }

    প্রজেক্ট/বিল্ড.গ্রেডল

    buildscript {
        repositories {
            // ...
            // Add Google's Maven repository.
            google()
        }
    
        dependencies {
            // ...
    
            classpath 'com.google.gms:google-services:4.4.4'
    
            // 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. আপনার অ্যাপটি বিল্ড ও রান করে নিশ্চিত করুন যে ক্র্যাশলিটিক্স সঠিকভাবে কনফিগার করা হয়েছে। সফল হলে, আপনি ক্র্যাশলিটিক্স ড্যাশবোর্ডে প্রবেশ করতে পারবেন।

(ঐচ্ছিক): আপনার সেটআপ পরীক্ষা করুন

একটি ক্র্যাশ বাটন যোগ করার মাধ্যমে আপনি প্রতিটি বাটন চাপে অ্যাপটিকে জোরপূর্বক ক্র্যাশ করাতে পারেন।

এখানে একটি উদাহরণ দেওয়া হলো, যেখানে দেখানো হয়েছে কীভাবে একটি Activity onCreate() মেথডে ক্র্যাশ বাটন যোগ করতে হয়:

প্রধান কার্যকলাপ (উদ্ধৃতাংশ)

জাভা

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

অ্যান্ড্রয়েড স্টুডিওতে, একটি এমুলেটর বা সংযুক্ত ডিভাইসে আপনার অ্যাপটি বিল্ড ও রান করুন। অ্যাপটি লোড হয়ে গেলে, আপনি ক্র্যাশ বোতামে ক্লিক করতে পারেন। ক্র্যাশ লগটি Crashlyics-এ আপলোড করার জন্য ডিভাইস বা অ্যান্ড্রয়েড স্টুডিও থেকে অ্যাপটি পুনরায় চালু করুন।

ধাপ ২: বিজ্ঞাপনের প্রতিক্রিয়া আইডিটি লগ করুন।

আপনি যদি একাধিক বিজ্ঞাপন লোড করেন এবং বিভিন্ন সময়ে দেখান, তাহলে প্রতিটি বিজ্ঞাপনের প্রতিক্রিয়া আইডি একটি আলাদা কী (key) দিয়ে লগ করা একটি ভালো উপায়। উদাহরণস্বরূপ, এই নির্দেশিকায় এমন একটি উদাহরণ ব্যবহার করা হয়েছে যেখানে শুধুমাত্র একটি ব্যানার বিজ্ঞাপন রয়েছে। তাই, আমরা নিম্নলিখিত কোড স্নিপেটে বিজ্ঞাপনের প্রতিক্রিয়া আইডিটিকে banner_ad_response_id কী হিসাবে লগ করি। প্রকৃতপক্ষে, আপনি বিভিন্ন ধরনের বিজ্ঞাপন এবং বিজ্ঞাপনের ইভেন্টের জন্য Firebase Crashlytics-এ একাধিক কাস্টম কী/ভ্যালু পেয়ার তৈরি করতে পারেন (বিজ্ঞাপনের জীবনচক্রের জন্য AdListener দেখুন)। কাস্টম লগিং সম্পর্কে আরও তথ্যের জন্য আপনার Firebase Crashlytics ক্র্যাশ রিপোর্ট কাস্টমাইজ করুন (Customize your Firebase Crashlytics crash reports ) দেখুন।

আপনার MyActivity.java তে নিম্নলিখিত কোডটি যোগ করুন। মূলত, এটি getResponseInfo() কল করার চেষ্টা করার আগে বিজ্ঞাপনটি লোড হয়েছে কিনা তা নিশ্চিত করতে onAdLoaded() কলব্যাক ফাংশনে FirebaseCrashlytics.setCustomKey() ফাংশনটি ব্যবহার করে।

জাভা

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

অভিনন্দন! আপনি এখন আপনার Crashlytics ড্যাশবোর্ডের ক্র্যাশ সেশনের 'key' বিভাগে সবচেয়ে সাম্প্রতিক banner_ad_response_id দেখতে পাবেন। উল্লেখ্য যে, কিছু 'key' আপনার ড্যাশবোর্ডে দৃশ্যমান হতে এক ঘণ্টা পর্যন্ত সময় লাগতে পারে।