Firebase Crashlytics এর সাথে বিজ্ঞাপন প্রতিক্রিয়া আইডি লগিং করা

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

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

ধাপ 1: একটি Android অ্যাপ্লিকেশনে Firebase যোগ করুন

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

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

  2. Firebase Crashlytics ব্যবহার করার জন্য, আপনাকে অবশ্যই একটি Firebase প্রকল্প তৈরি করতে হবে এবং এতে আপনার অ্যাপ যোগ করতে হবে। যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে একটি Firebase প্রকল্প তৈরি করুন৷ এটিতে আপনার অ্যাপটি নিবন্ধন করতে ভুলবেন না।

    1. Firebase কনসোলের Crashlytics পৃষ্ঠায়, Crashlytics সেট আপ করুন ক্লিক করুন।

    2. প্রদর্শিত স্ক্রিনে, না > একটি নতুন ফায়ারবেস অ্যাপ সেট আপ করুন ক্লিক করুন।

  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() পদ্ধতিতে একটি ক্র্যাশ বোতাম যুক্ত করতে হয়:

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

জাভা

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

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

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

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

আপনার MyActivity.java এ নিম্নলিখিত কোডটি যোগ করুন। মূলত, এটি onAdLoaded() কলব্যাক ফাংশনে FirebaseCrashlytics.setCustomKey() ফাংশন ব্যবহার করে 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))
}

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