AdMob'Firebase 101 Android: সেটআপ & বিশ্লেষণ বেসিক

১. ভূমিকা

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

তবে, একটি চমৎকার বিজ্ঞাপন অভিজ্ঞতা তৈরি করা সহজ নয়। আপনার মনে এই ধরনের প্রশ্ন থাকতে পারে: এই বিজ্ঞাপনগুলো কত ঘন ঘন দেখানো উচিত? কোথায় এবং কখন এগুলো দেখানো উচিত? পুরস্কার কী হওয়া উচিত? দুর্ভাগ্যবশত, এর উত্তর অ্যাপ ভেদে এবং বিজ্ঞাপন প্রদর্শনের স্থান ভেদে ভিন্ন হয়। এর কোনো সর্বজনীন উত্তর নেই।

Google Analytics for Firebase, AdMob এবং Firebase-এর দেওয়া আরও বেশ কিছু শক্তিশালী অথচ সহজে ব্যবহারযোগ্য টুলের সাহায্যে, ডেটা-নির্ভর উপায়ে আপনার অ্যাপকে নিখুঁত করা অনেক বেশি সহজ ও সুশৃঙ্খল হয়ে উঠেছে। আজ আমরা আপনাকে দেখাবো, কীভাবে আপনি এটি শুরু করতে পারেন!

আপনি যা তৈরি করবেন

এই কোডল্যাবটি তিনটি কোডল্যাবের মধ্যে প্রথম, যা আপনাকে 'Awesome Drawing Quiz' নামক একটি অ্যাপ তৈরি করতে নির্দেশনা দেবে। এটি এমন একটি গেম যেখানে খেলোয়াড়রা আঁকা ছবির নাম অনুমান করতে পারে। এতে দেখানো হবে কীভাবে আপনি আপনার গেমে রিওয়ার্ডেড অ্যাডস এবং ফায়ারবেস সার্ভিস অন্তর্ভুক্ত করতে পারেন।

এই কোডল্যাবে, আপনি অ্যাপের কিছু গুরুত্বপূর্ণ ইভেন্ট রেকর্ড করার জন্য ফায়ারবেসের সাথে গুগল অ্যানালিটিক্স ইন্টিগ্রেট করবেন। এছাড়াও, আপনি শিখবেন কীভাবে ফায়ারবেস কনসোলে দেখানো অ্যাপ অ্যানালিটিক্স পড়তে হয়।

এই কোডল্যাবটি করার সময় যদি আপনি কোনো সমস্যার (কোড বাগ, ব্যাকরণগত ভুল, অস্পষ্ট শব্দচয়ন ইত্যাদি) সম্মুখীন হন, তাহলে অনুগ্রহ করে কোডল্যাবের নিচের বাম কোণে থাকা 'Report a mistake ' লিঙ্কের মাধ্যমে সমস্যাটি জানান।

আপনি যা শিখবেন

  • আপনার অ্যাপে ফায়ারবেসের জন্য গুগল অ্যানালিটিক্স কীভাবে সেট আপ করবেন
  • অ্যাপ ইভেন্টগুলি কীভাবে রেকর্ড করবেন
  • ফায়ারবেস কনসোলে দেখানো অ্যাপ অ্যানালিটিক্স কীভাবে পড়বেন

আপনার যা যা লাগবে

  • অ্যান্ড্রয়েড স্টুডিও সংস্করণ ৪.১+
  • একটি গুগল অ্যাকাউন্ট
  • আপনার ডিভাইসটি সংযোগ করার জন্য একটি ইউএসবি কেবলসহ অ্যান্ড্রয়েড ৫.০+ চালিত একটি টেস্ট ডিভাইস, অথবা প্লে স্টোর/গুগল এপিআই সমর্থনকারী সিস্টেম ইমেজসহ এভিডি (অ্যান্ড্রয়েড ভার্চুয়াল ডিভাইস) চালিত একটি অ্যান্ড্রয়েড এমুলেটর।

AdMob নিয়ে আপনার অভিজ্ঞতার স্তরকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

ফায়ারবেস নিয়ে আপনার অভিজ্ঞতার স্তরকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

২. উন্নয়ন পরিবেশ সেটআপ করুন

কোডটি ডাউনলোড করুন

এই কোডল্যাবের সম্পূর্ণ কোড ডাউনলোড করতে নিচের বাটনটিতে ক্লিক করুন:

ডাউনলোড করা জিপ ফাইলটি আনপ্যাক করুন। এটি admob-firebase-codelabs-android নামের একটি রুট ফোল্ডার আনপ্যাক করবে।

...অথবা কমান্ড লাইন থেকে গিটহাব রিপোজিটরিটি ক্লোন করুন।

$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-android

রিপোজিটরিটিতে নিম্নলিখিত চারটি ফোল্ডার রয়েছে:

  • android_studio_folder.png 101-base — এই কোডল্যাবে আপনি যে প্রারম্ভিক কোডটি তৈরি করবেন।
  • android_studio_folder.png 101-complete_and_102-base — এই কোডল্যাবের সম্পূর্ণ কোড এবং ১০২ নম্বর কোডল্যাবের সূচনা।
  • android_studio_folder.png ১০২-সম্পূর্ণ — ১০২ কোডল্যাবের জন্য কোড সম্পন্ন হয়েছে।

স্টার্টার অ্যাপটি ইম্পোর্ট করুন

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

এখন আপনার অ্যান্ড্রয়েড স্টুডিওতে প্রজেক্টটি খোলা থাকা উচিত।

৩. রিওয়ার্ডেড ভিডিও বিজ্ঞাপন ইউনিট সেটআপ করুন (ঐচ্ছিক)

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

আপনার অ্যাকাউন্টে একটি নতুন AdMob অ্যাপ তৈরি করতে, অনুগ্রহ করে নিচের নির্দেশাবলী অনুসরণ করুন:

  1. AdMob কনসোলে যান।
  2. অ্যাপস মেনু থেকে " অ্যাড অ্যাপ "-এ ক্লিক করুন।
  3. "আপনি কি আপনার অ্যাপটি গুগল প্লে বা অ্যাপ স্টোরে প্রকাশ করেছেন?" জিজ্ঞাসা করা হলে, " না" উত্তর দিন।
  4. অ্যাপটির নাম দিন "Awesome Drawing Quiz, " প্ল্যাটফর্ম হিসেবে "Android" বেছে নিন, তারপর " Add " এ ক্লিক করুন।

আপনার অ্যাকাউন্টে একটি AdMob অ্যাপ তৈরি করার পর, একটি নতুন রিওয়ার্ডেড ভিডিও অ্যাড ইউনিট তৈরি করতে নিচে বর্ণিত ধাপগুলো অনুসরণ করুন।

  1. AdMob ফ্রন্টএন্ডে অ্যাপস মেনুতে ক্লিক করুন, তারপর অ্যাপ তালিকা থেকে "Awesome Drawing Quiz" নির্বাচন করুন।
  2. একটি নতুন রিওয়ার্ডেড ভিডিও অ্যাড ইউনিট তৈরি করতে অ্যাড ইউনিট-এ ক্লিক করুন।
  3. বিজ্ঞাপনের ফরম্যাট হিসেবে ‘রিওয়ার্ডেড’ নির্বাচন করুন।

7672f41ec611101b.png

  1. আপনার পছন্দ অনুযায়ী অ্যাড ইউনিটের নাম দিন। তারপর, পুরস্কারের পরিমাণ এবং পুরস্কার আইটেমটি "হিন্ট" (এটি সেই পুরস্কার যা অ্যাপটি বর্তমানে ব্যবহারকারীদের দিয়ে থাকে) হিসেবে সেট করুন। একটি নতুন রিওয়ার্ডেড ভিডিও অ্যাড ইউনিট তৈরি করতে CREATE AD UNIT-এ ক্লিক করুন।

6d067814a2c38264.png

  1. সফলভাবে তৈরি হলে, আপনি নিম্নলিখিতের মতো নির্দেশাবলী দেখতে পাবেন: ff872a005a07b75e.png
  2. অ্যান্ড্রয়েড প্রজেক্টে ফিরে যান এবং পূর্ববর্তী ধাপে তৈরি করা AdMob অ্যাপ আইডি ও অ্যাড ইউনিট আইডি কনস্ট্যান্টগুলো দিয়ে আপডেট করুন।

strings.xml

<!-- Update the value with your AdMob app id -->
<string name="admob_app_id">YOUR_ADMOB_APP_ID</string>

গেমঅ্যাক্টিভিটি. কেটি

// Update the value with your Rewarded Video ad unit id
private const val AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";

৪. ফায়ারবেস প্রজেক্ট সেটআপ করুন

ফায়ারবেস কনসোল থেকে একটি নতুন প্রজেক্ট তৈরি করুন

  1. ফায়ারবেস কনসোলে যান।
  2. 'Add Project' নির্বাচন করুন এবং আপনার প্রজেক্টের নাম দিন 'Awesome Drawing Quiz'। নিশ্চিত করুন যে ' Enable Google Analytics for this project' রেডিও বাটনটি চালু আছে।
  3. আপনি যে গুগল অ্যানালিটিক্স অ্যাকাউন্টটি ব্যবহার করতে চান, সেটি নির্বাচন করুন। বেশিরভাগ ক্ষেত্রে, ‘ Default Account for Firebase’ অপশনটি নির্বাচন করাই যথেষ্ট, কিন্তু আপনার যদি অন্য কোনো গুগল অ্যানালিটিক্স অ্যাকাউন্ট থাকে যা আপনি ব্যবহার করতে চান, তবে সেটি এখানে নির্বাচন করুন।
  4. প্রজেক্ট তৈরি করুন -এ ক্লিক করুন।

অ্যান্ড্রয়েড অ্যাপ যোগ করুন

  1. আপনার নতুন প্রজেক্টের ওভারভিউ স্ক্রিন থেকে, আপনার অ্যান্ড্রয়েড অ্যাপে ফায়ারবেস যোগ করুন (Add Firebase to your Android app) -এ ক্লিক করুন।
  2. কোডল্যাবের প্যাকেজের নাম লিখুন: com.codelab.awesomedrawingquiz
  3. আপনার অ্যাপের জন্য একটি ডাকনাম সেট করুন: Awesome Drawing Quiz
  4. SHA-1 ক্ষেত্রটি খালি রাখুন, কারণ এই প্রকল্পের জন্য SHA-1 প্রয়োজন নেই।
  5. আপনার অ্যাপটি নিবন্ধন করতে 'Register app' নির্বাচন করুন।

আপনার অ্যাপে google-services.json ফাইলটি যোগ করুন

এরপরে, আপনার সামনে একটি স্ক্রিন আসবে যেখান থেকে আপনি একটি কনফিগারেশন ফাইল ডাউনলোড করতে পারবেন। এই ফাইলটিতে আপনার অ্যাপের জন্য প্রয়োজনীয় সমস্ত ফায়ারবেস মেটাডেটা রয়েছে। Download google-service.json-এ ক্লিক করুন এবং ফাইলটি কপি করে পেস্ট করুন। android_studio_folder.png আপনার প্রোজেক্টের অ্যাপ ডিরেক্টরিতে।

32419a0fa25a1405.png

নির্ভরতা সংস্করণ ঘোষণা করুন

প্রজেক্টে Firebase ইন্টিগ্রেট করার জন্য প্রয়োজনীয় প্রতিটি ডিপেন্ডেন্সির ভার্সন যোগ করার মাধ্যমে শুরু করা যাক। প্রজেক্ট রুটে অবস্থিত dependencies.gradle ফাইলটি খুলুন, তারপর google-services প্লাগইন, Firebase Analytics SDK এবং Firebase Core SDK ভার্সন যোগ করুন।

নির্ভরতা.গ্রেডল

ext {
    ...

    // TODO: Declare google-services plugin version (101)
    googleServicesPluginVersion = '4.3.4'

    ...

    // TODO: Declare Firebase BOM version (101)                                                                                                                                                                                                   
    firebaseBomVersion = '26.2.0'

    ...
}

আপনার অ্যাপে গুগল-সার্ভিসেস প্লাগইনটি প্রয়োগ করুন

google-services প্লাগইনটি আপনার অ্যাপ্লিকেশনকে Firebase ব্যবহারের জন্য কনফিগার করতে google-services.json ফাইলটি ব্যবহার করে।

প্রজেক্টের রুট ডিরেক্টরিতে অবস্থিত build.gradle ফাইলে google-services-কে ক্লাসপাথ হিসেবে যুক্ত করুন।

বিল্ড.গ্রেডল

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ...
    
    dependencies {
        classpath "com.android.tools.build:gradle:$androidPluginVersion"

        // TODO: Add google-services plugin (101)
        classpath "com.google.gms:google-services:$googleServicesPluginVersion"

        ...
    }
}

...

এরপর, app/build.gradle ফাইলে নিচের মতো করে একটি লাইন যোগ করে google-services প্লাগইনটি প্রয়োগ করুন:

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

apply plugin: 'com.android.application'

// TODO: Apply google-services plugin (101)
apply plugin: 'com.google.gms.google-services'

android {
    ...
}

dependencies {
    ...
}

প্রকল্পে Firebase SDK যোগ করুন

এরপরে আপনার app/build.gradle ফাইলে, অ্যাপ ডিপেন্ডেন্সিতে অ্যানালিটিক্স এসডিকে (Analytics SDK) যোগ করুন।

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

apply plugin: 'com.android.application'

android {
    ...
}

dependencies {
    ...

    // TODO: Import the Firebase BoM (101)
    implementation platform("com.google.firebase:firebase-bom:$firebaseBomVersion")

    // COMPLETE: Add Firebase Analytics dependency (101)
    implementation 'com.google.firebase:firebase-analytics-ktx'

    ...
}

...

আপনার প্রজেক্টটি গ্রেডল ফাইলের সাথে সিঙ্ক করুন।

আপনার অ্যাপে সমস্ত ডিপেন্ডেন্সি উপলব্ধ আছে কিনা তা নিশ্চিত করতে, আপনার প্রজেক্টটি গ্রেডল ফাইলের সাথে সিঙ্ক করুন। আপনার প্রজেক্টটি গ্রেডল ফাইলের সাথে সিঙ্ক করতে ফাইল > সিঙ্ক প্রজেক্ট উইথ গ্রেডল ফাইলস মেনুটি নির্বাচন করুন।

৫. ফায়ারবেস প্রজেক্টের সাথে অ্যাডমব লিঙ্ক করুন

আপনার অ্যাপগুলোকে ফায়ারবেসের সাথে লিঙ্ক করতে নিচের ধাপগুলো সম্পন্ন করুন।

  1. https://apps.admob.com -এ আপনার AdMob অ্যাকাউন্টে সাইন ইন করুন।
  2. সাইডবারে থাকা অ্যাপস-এ ক্লিক করুন।
  3. "অসাম ড্রয়িং কুইজ" নির্বাচন করুন। যদি আপনি এটিকে সাম্প্রতিক অ্যাপের তালিকায় দেখতে না পান, তাহলে আপনি AdMob-এ যোগ করা সমস্ত অ্যাপের তালিকা অনুসন্ধান করতে "ভিউ অল অ্যাপস"-এ ক্লিক করতে পারেন।
  4. সাইডবারে অ্যাপ সেটিংসে ক্লিক করুন।
  5. ফায়ারবেস-এ যেতে লিঙ্কে ক্লিক করুন।
  6. 'বিদ্যমান ফায়ারবেস প্রজেক্টের সাথে লিঙ্ক করুন এবং একটি নতুন ফায়ারবেস অ্যাপ তৈরি করুন' বিকল্পটি নির্বাচন করুন। তারপর ড্রপডাউন মেনু থেকে 'অসাম ড্রয়িং কুইজ' প্রজেক্টটি নির্বাচন করুন।
  7. 'CONTINUE' বোতামে ক্লিক করার পর আপনি 'Successfully linked' বার্তাটি দেখতে পাবেন। শেষ করতে 'DONE' বোতামে ক্লিক করুন।

একবার আপনি আপনার AdMob অ্যাপটিকে Firebase প্রজেক্টের সাথে লিঙ্ক করলে, AdMob এবং Firebase কনসোল উভয় ক্ষেত্রেই নিম্নলিখিত কিছু অতিরিক্ত ফিচার আনলক হবে:

রাজস্ব কার্ড (অ্যাডমব)

রেভিনিউ কার্ড থেকে আপনি সম্ভাব্য সমস্ত আয়ের উৎসগুলো এক জায়গায় সামগ্রিকভাবে দেখতে পারেন। সমর্থিত আয়ের উৎসগুলো নিম্নরূপ:

  • AdMob (আনুমানিক)
  • মধ্যস্থতাকারী বিজ্ঞাপন নেটওয়ার্ক (পর্যবেক্ষণ করা হয়েছে)
  • অ্যাপের মধ্যে কেনাকাটা
  • ই-কমার্স ক্রয়

10fe118249e11150.png

ব্যবহারকারীর মেট্রিক্স কার্ড (অ্যাডমব)

ইউজার মেট্রিক্স কার্ড থেকে আপনি দেখতে পারেন, আপনার বিজ্ঞাপন অভিজ্ঞতার পরিবর্তনগুলো ব্যবহারকারীর আচরণকে কীভাবে প্রভাবিত করতে পারে।

5f56366f1b31d4a1.png

পুরস্কৃত বিজ্ঞাপন প্রতিবেদন (অ্যাডমব)

রিওয়ার্ডেড অ্যাডস রিপোর্টটি বিভিন্ন ধরনের মেট্রিক প্রদান করে, যা পাবলিশারদের বুঝতে সাহায্য করবে যে ব্যবহারকারীরা তাদের রিওয়ার্ডেড অ্যাডগুলোর সাথে কীভাবে ইন্টারঅ্যাক্ট করছে।

658a2868777690ea.png

মোট রাজস্ব কার্ড (ফায়ারবেস)

আপনার AdMob অ্যাপটি Firebase-এর সাথে লিঙ্ক করার পর, Firebase ড্যাশবোর্ডের 'Total revenue' কার্ডে AdMob থেকে প্রাপ্ত আয়ের পাশাপাশি ইন-অ্যাপ-পারচেজ এবং ই-কমার্স পারচেজও প্রদর্শিত হবে।

98cb283977b023a.png

বিজ্ঞাপন ইভেন্ট রিপোর্টিং (ফায়ারবেস)

বিজ্ঞাপন-সম্পর্কিত ইভেন্টগুলো (ক্লিক, ইম্প্রেশন এবং রিওয়ার্ড ইভেন্ট) স্বয়ংক্রিয়ভাবে সংগ্রহ করা হয় এবং Google Analytics for Firebase-এ ব্যবহারের জন্য উপলব্ধ থাকে।

bf77bd8c00c1441b.png

৬. প্রকল্পটি চালান।

প্রজেক্টটি কম্পাইল ও রান করার পর, অ্যাপটি চালু হলে আপনি নিম্নলিখিত স্ক্রিনটি দেখতে পাবেন।

15f1d8041988974c.png

একবার আপনি 'স্টার্ট এ গেম' (START A GAME)-এ ক্লিক করলে, স্ক্রিনে একটি ছবি দেখতে পাবেন। আপনার কাজ হলো উপরে প্রদর্শিত ইঙ্গিতটি ব্যবহার করে ছবিটির নাম অনুমান করা, যেখান থেকে আপনি ছবিটির নামের প্রথম অক্ষর এবং দৈর্ঘ্য অনুমান করতে পারবেন।

8e87e96256d6874a.png9c4a0143c3234cb2.png

ড্রয়িংটির নাম কী, সে সম্পর্কে আপনার কোনো ধারণা না থাকলে, 'SKIP' বোতামে ক্লিক করে লেভেলটি এড়িয়ে যেতে পারেন।

উত্তরটি অনুমান করতে আপনার একটি অতিরিক্ত সূত্রের প্রয়োজন হতে পারে। আপনি 'HINT' বোতামে ক্লিক করে এবং একটি রিওয়ার্ডেড ভিডিও বিজ্ঞাপন দেখে একটি অতিরিক্ত সূত্র পেতে পারেন। বিজ্ঞাপনটি দেখা শেষ হলে, পুরস্কার হিসেবে একটি অতিরিক্ত অক্ষর প্রকাশ করা হবে।

edcf6f0d833ea4ea.png47ab9a07b1c71711.png

৭. অ্যাপ ইভেন্ট যোগ করুন

Awesome Drawing Quiz-এ ব্যবহারকারীর অভিজ্ঞতা গভীরভাবে বোঝার জন্য, আপনাকে কয়েকটি কাস্টম ইভেন্ট সংজ্ঞায়িত করতে হবে যা গেমে ব্যবহারকারীর আচরণ ট্র্যাক করবে, যেমন:

ইভেন্টের নাম

সক্রিয় হয়েছে...

প্যারামিটার

খেলা_শুরু

যখন একজন ব্যবহারকারী নতুন গেম শুরু করে

কোনোটিই না

স্তর_শুরু

যখন কোনো ব্যবহারকারী একটি স্টেজের মধ্যে একটি নতুন লেভেল (একটি নতুন অঙ্কন কুইজ) শুরু করে। (একটি স্টেজে ৬টি লেভেল থাকে)

স্তরের নাম

স্তর_ভুল_উত্তর

যখন একজন ব্যবহারকারী একটি ভুল উত্তর জমা দেয়

স্তরের নাম

বিজ্ঞাপন_পুরস্কার_প্রম্পট

যখন কোনো ব্যবহারকারী হিন্ট বোতামে ট্যাপ করেন, এবং তাকে একটি রিওয়ার্ডেড ভিডিও বিজ্ঞাপন দেখার জন্য অনুরোধ করা হয়।

ad_unit_id

বিজ্ঞাপন_পুরস্কার_ইম্প্রেশন

যখন একজন ব্যবহারকারী একটি রিওয়ার্ডেড ভিডিও বিজ্ঞাপন দেখা শুরু করে

ad_unit_id

স্তর_সফলতা

যখন কোনো ব্যবহারকারী একটি সঠিক উত্তর জমা দেয় (একটি লেভেল সম্পন্ন করে)

লেভেলের নাম, চেষ্টার সংখ্যা, অতিবাহিত সময় (সেকেন্ড), ব্যবহৃত ইঙ্গিত

স্তর_ব্যর্থ

যখন একজন ব্যবহারকারী একটি স্তর এড়িয়ে যায়

লেভেলের নাম, চেষ্টার সংখ্যা, অতিবাহিত সময় (সেকেন্ড), ব্যবহৃত ইঙ্গিত

খেলা_সম্পূর্ণ

যখন খেলা শেষ হয়ে যায়

সঠিক উত্তরের সংখ্যা

প্রতিটি ঘটনার সাথে সংশ্লিষ্ট প্রতিটি প্যারামিটারের বিবরণ নিম্নরূপ:

ইভেন্টের নাম

প্যারামিটার নাম

বর্ণনা

স্তর_শুরু

স্তরের নাম

লেভেলে দেখানো অঙ্কনটির নাম (যেমন, 'কলা')

স্তর_ভুল_উত্তর

স্তরের নাম

যখন একজন ব্যবহারকারী একটি ভুল উত্তর জমা দেয়

বিজ্ঞাপন_পুরস্কার_প্রম্পট

ad_unit_id

একটি রিওয়ার্ডেড ভিডিও বিজ্ঞাপন প্রদর্শনের জন্য ব্যবহৃত বিজ্ঞাপন ইউনিট আইডি।

বিজ্ঞাপন_পুরস্কার_ইম্প্রেশন

ad_unit_id

একটি রিওয়ার্ডেড ভিডিও বিজ্ঞাপন প্রদর্শনের জন্য ব্যবহৃত বিজ্ঞাপন ইউনিট আইডি।

স্তর_সফলতা

স্তরের নাম

লেভেলে দেখানো অঙ্কনটির নাম (যেমন, 'কলা')

স্তর_সফলতা

চেষ্টার সংখ্যা

একটি লেভেল পার করতে চেষ্টার সংখ্যা

স্তর_সফলতা

অতিবাহিত সময় সেকেন্ড

একটি লেভেল শেষ করতে অতিবাহিত সময়, সেকেন্ডে

স্তর_সফলতা

ইঙ্গিত_ব্যবহৃত

ব্যবহারকারী একটি লেভেল পার করার জন্য কোনো ইঙ্গিত (পুরস্কারপ্রাপ্ত ভিডিও বিজ্ঞাপন দেখা) ব্যবহার করেছেন কি না (১: ইঙ্গিত ব্যবহার করেছেন / ০: ইঙ্গিত ছাড়া লেভেল পার করেছেন)

স্তর_ব্যর্থ

স্তরের নাম

লেভেলে দেখানো অঙ্কনটির নাম (যেমন, 'কলা')

স্তর_ব্যর্থ

চেষ্টার সংখ্যা

একটি লেভেল পার করতে চেষ্টার সংখ্যা

স্তর_ব্যর্থ

অতিবাহিত সময় সেকেন্ড

একটি লেভেল শেষ করতে অতিবাহিত সময়, সেকেন্ডে

স্তর_ব্যর্থ

ইঙ্গিত_ব্যবহৃত

ব্যবহারকারী একটি লেভেল পার করার জন্য কোনো ইঙ্গিত (পুরস্কারপ্রাপ্ত ভিডিও বিজ্ঞাপন দেখা) ব্যবহার করেছেন কি না (১: ইঙ্গিত ব্যবহার করেছেন / ০: ইঙ্গিত ছাড়া লেভেল পার করেছেন)

খেলা_সম্পূর্ণ

সঠিক উত্তরের সংখ্যা

গেমটিতে সম্পন্ন করা লেভেলের সংখ্যা

কাস্টম ইভেন্ট লগ করার জন্য একটি হেল্পার ক্লাস তৈরি করুন।

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

প্রথমে, com.codelab.awesomedrawingquiz প্যাকেজের অধীনে QuizAnalytics.kt নামে একটি নতুন Kotlin ফাইল (কোন Kotlin ক্লাস নয়) তৈরি করুন। আপনার কাস্টম ইভেন্টগুলোর নাম এবং তাদের প্যারামিটার নির্ধারণ করার জন্য ফিল্ড তৈরি করুন।

কুইজঅ্যানালিটিক্স.কেটি

private const val EVENT_AD_REWARD_PROMPT = "ad_reward_prompt"

private const val EVENT_AD_REWARD_IMPRESSION = "ad_reward_impression"

private const val EVENT_LEVEL_FAIL = "level_fail"

private const val EVENT_LEVEL_SUCCESS = "level_success"

private const val EVENT_LEVEL_WRONG_ANSWER = "level_wrong_answer"

private const val EVENT_GAME_START = "game_start"

private const val EVENT_GAME_COMPLETE = "game_complete"

private const val PARAM_AD_UNIT_ID = "ad_unit_id"

private const val PARAM_ELAPSED_TIME_SEC = "elapsed_time_sec"

private const val PARAM_HINT_USED = "hint_used"

private const val PARAM_NUMBER_OF_ATTEMPTS = "number_of_attempts"

private const val PARAM_NUMBER_OF_CORRECT_ANSWERS = "number_of_correct_answers"

এরপর, এক্সটেনশন ফাংশনগুলো যোগ করুন যা আপনাকে আপনার গেমে কাস্টম ইভেন্টগুলো লগ করতে সাহায্য করবে। মনে রাখবেন যে বেশিরভাগ কাস্টম ইভেন্টে প্যারামিটার অন্তর্ভুক্ত থাকে, যাতে আপনি প্রতিটি ইভেন্ট সম্পর্কে আরও বিস্তারিত ধারণা পান। আরও মনে রাখবেন যে কয়েকটি ইভেন্টের নাম এবং প্যারামিটার ( FirebaseAnalytics.Event.LEVEL_NAME এবং FirebaseAnalytics.Event.LEVEL_START ) অ্যানালিটিক্স দ্বারা ইতিমধ্যেই সংজ্ঞায়িত করা আছে, তাই আমরা সেগুলোই ব্যবহার করব।

কুইজঅ্যানালিটিক্স.কেটি

...

fun FirebaseAnalytics.logGameStart() = logEvent(EVENT_GAME_START, null)

fun FirebaseAnalytics.logLevelStart(levelName: String) {
    logEvent(FirebaseAnalytics.Event.LEVEL_START) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
    }
}

fun FirebaseAnalytics.logLevelWrongAnswer(levelName: String) {
    logEvent(EVENT_LEVEL_WRONG_ANSWER) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
    }
}

fun FirebaseAnalytics.logAdRewardPrompt(adUnitId: String) {
    logEvent(EVENT_AD_REWARD_PROMPT) {
        param(PARAM_AD_UNIT_ID, adUnitId)
    }
}

fun FirebaseAnalytics.logAdRewardImpression(adUnitId: String) {
    logEvent(EVENT_AD_REWARD_IMPRESSION) {
        param(PARAM_AD_UNIT_ID, adUnitId)
    }
}

fun FirebaseAnalytics.logLevelSuccess(
    levelName: String,
    numberOfAttempts: Int,
    elapsedTimeSec: Int,
    hintUsed: Boolean
) {
    logEvent(EVENT_LEVEL_SUCCESS) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
        param(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts.toLong())
        param(PARAM_ELAPSED_TIME_SEC, elapsedTimeSec.toLong())
        param(PARAM_HINT_USED, if (hintUsed) 1 else 0)
    }
}

fun FirebaseAnalytics.logLevelFail(
    levelName: String,
    numberOfAttempts: Int,
    elapsedTimeSec: Int,
    hintUsed: Boolean
) {
    logEvent(EVENT_LEVEL_FAIL) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
        param(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts.toLong())
        param(PARAM_ELAPSED_TIME_SEC, elapsedTimeSec.toLong())
        param(PARAM_HINT_USED, if (hintUsed) 1 else 0)
    }
}

fun FirebaseAnalytics.logGameComplete(
    numberOfCorrectAnswers: Int
) {
    logEvent(EVENT_GAME_COMPLETE) {
        param(PARAM_NUMBER_OF_CORRECT_ANSWERS, numberOfCorrectAnswers.toLong())
    }
}

গেমে অ্যানালিটিক্স ইভেন্টগুলো লগ করুন

GameViewModel ক্লাসে FirebaseAnalytics ইনস্ট্যান্সের জন্য একটি নতুন প্রপার্টি যোগ করুন।

GameViewModel.kt

class GameViewModel(
    ...
    // TODO: Accept FirebaseAnalytics instance as a parameter (101)
    private val analytics: FirebaseAnalytics,
) : ViewModel() {
   ...
}

এরপরে, AwesomeDrawingQuizViewModelFactory ক্লাসে, GameViewModel এ পূর্বে যেমনটি করেছিলেন, সেভাবে একটি নতুন প্রপার্টি যোগ করুন।

AwesomeDrawingQuizViewModelFactory.kt

class AwesomeDrawingQuizViewModelFactory(
    ...
    // TODO: Accept FirebaseAnalytics instance as a parameter (101)
    private val analytics: FirebaseAnalytics,
) : ViewModelProvider.Factory {
    ...
}

এরপরে, AwesomeDrawingQuiz ক্লাসে provideFirebaseAnalytics() ফাংশনটি যোগ করুন এবং provideViewModelFactory() ফাংশনটি আপডেট করে FirebaseAnalytics ইনস্ট্যান্সটিকে AwesomeDrawingViewModelFactory তে পাস করুন।

AwesomeDrawingQuiz.kt

class AwesomeDrawingQuiz : Application() {

    ...

    fun provideViewModelFactory() = AwesomeDrawingQuizViewModelFactory(
        this,
        provideGameSettings(),
        // TODO: Pass FirebaseAnalytics instance as a parameter (101)
        provideFirebaseAnalytics(),
    )

    // TODO: Provide FirebaseAnalytics instance (101)
    private fun provideFirebaseAnalytics() = Firebase.analytics

    ...

}

এখন আপনি কাস্টম ইভেন্টগুলো প্রয়োগ করার জন্য প্রস্তুত। প্রথমে, startGame() ফাংশনের মধ্যে, একটি গেম শুরু হয়েছে তা বোঝাতে logGameStart() কল করুন।

যেহেতু logGameStart() হলো FirebaseAnalytics ক্লাসের একটি এক্সটেনশন ফাংশন , তাই আপনি FirebaseAnalytics ক্লাসের ইনস্ট্যান্স থেকেই এটিকে কল করতে পারেন।

GameViewModel.kt

fun startGame() {
    ...

    // TODO: Log game_start event (101)
    analytics.logGameStart()

    ...
}

এরপরে, checkAnswer() ফাংশনে level_success এবং level_wrong_answer ইভেন্টগুলো যোগ করুন।

GameViewModel.kt

fun checkAnswer(userAnswer: String) {
    ...
    if (correct) {
        ...

        // TODO: Log level_success event (101)
        analytics.logLevelSuccess(
            levelName = drawing.word,
            numberOfAttempts = numAttempts,
            elapsedTimeSec = elapsedTimeInSeconds,
            hintUsed = isHintUsed,
        )

        ...
    } else {
        // TODO: Log level_wrong_answer event (101)
        analytics.logLevelWrongAnswer(levelName = drawing.word)

        ...
    }
}

এরপরে, skipLevel() ফাংশনের মধ্যে level_fail ইভেন্টটি যোগ করে লেভেলটিকে ব্যর্থ হিসেবে চিহ্নিত করুন।

GameViewModel.kt

fun skipLevel() {
   ...

    // TODO: Log level_fail event (101)
    analytics.logLevelFail(
        levelName = drawing.word,
        numberOfAttempts = numAttempts,
        elapsedTimeSec = elapsedTimeInSeconds,
        hintUsed = isHintUsed,
    )

    ...
}

এরপরে, রিওয়ার্ডেড ভিডিও অ্যাডটির বিষয়ে ব্যবহারকারীর আচরণ ট্র্যাক করার জন্য logAdRewardPrompt() এবং logAdRewardImpression() ফাংশনগুলো ইমপ্লিমেন্ট করুন।

GameViewModel.kt

fun logAdRewardPrompt(adUnitId: String) {
    // TODO: Log ad_reward_prompt event (101)
    analytics.logAdRewardPrompt(adUnitId)
}

fun logAdRewardImpression(adUnitId: String) {
    // TODO: Log ad_reward_impression event (101)
    analytics.logAdRewardImpression(adUnitId)
}

অবশেষে, level_start এবং game_complete কাস্টম ইভেন্ট যোগ করার জন্য requestNewDrawing() এবং finishGame() ফাংশন দুটি পরিবর্তন করুন।

GameViewModel.kt

private fun requestNewDrawing() {
    ...

    drawingRequestDisposable = drawingDao.getRandomDrawings(seenWords)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe { d ->
            ...

            // TODO: Log level_start event (101)
            analytics.logLevelStart(d.word)

            ...
        }
}

private fun finishGame() {
    // TODO: Log game_complete event (101)
    analytics.logGameComplete(numCorrectAnswers)

    ...
}

৮. অ্যানালিটিক্স ইভেন্ট ডিবাগ করুন

ইভেন্টগুলো সঠিকভাবে লগ হচ্ছে কিনা তা যাচাই করতে আপনি ফায়ারবেস কনসোলে DebugView ব্যবহার করতে পারেন। DebugView আপনাকে ডেভেলপমেন্ট ডিভাইসগুলোতে আপনার অ্যাপ দ্বারা লগ করা মূল ইভেন্ট ডেটা প্রায় রিয়েল-টাইমে দেখতে সক্ষম করে।

এটি উন্নয়নের ইন্সট্রুমেন্টেশন পর্যায়ে যাচাইকরণের জন্য খুবই উপযোগী এবং আপনার অ্যানালিটিক্স বাস্তবায়নের যেকোনো ত্রুটি খুঁজে বের করতে সাহায্য করতে পারে।

ডিবাগ মোড সক্রিয় করুন

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

ডিবাগ মোড চালু করতে, নিম্নলিখিত ধাপগুলো সম্পন্ন করুন:

  1. অ্যান্ড্রয়েড স্টুডিওতে টার্মিনাল টুল উইন্ডোটি খুলুন ( ভিউ > টুল উইন্ডোজ > টার্মিনাল )।

c8dc1b4f08a224b8.png

  1. নিম্নলিখিত কমান্ডটি চালান (নিশ্চিত করুন যে পরীক্ষাধীন অ্যান্ড্রয়েড ডিভাইসটি আপনার কম্পিউটারের সাথে সংযুক্ত আছে অথবা অ্যান্ড্রয়েড এমুলেটর চালু আছে):
adb shell setprop debug.firebase.analytics.app com.codelab.awesomedrawingquiz

নিম্নলিখিত কমান্ডটি চালিয়ে আপনি স্পষ্টভাবে ডিবাগ মোড নিষ্ক্রিয় না করা পর্যন্ত এই আচরণটি অব্যাহত থাকে:

adb shell setprop debug.firebase.analytics.app .none.

DebugView ব্যবহার করে অ্যানালিটিক্স ইভেন্ট ডিবাগ করুন

আপনার টেস্ট ডিভাইসে ডিবাগ মোড চালু করার পর, Firebase কনসোলে আপনার প্রজেক্টে যান এবং মেনু থেকে Analytics > DebugView নির্বাচন করুন। এরপর, আপনার টেস্ট ডিভাইসে গেমটি খেলুন, তাহলে দেখবেন ইভেন্টগুলো লগ হচ্ছে এবং DebugView রিপোর্টে দেখানো হচ্ছে।

827059255d09ac00.png

ইভেন্টের নামে ক্লিক করে আপনি প্রতিটি ইভেন্ট সম্পর্কে বিস্তারিত তথ্য পেতে পারেন। উদাহরণস্বরূপ, নিচের স্ক্রিনশটটিতে level_start ইভেন্টের সাথে সম্পর্কিত প্যারামিটারের বিবরণ দেখানো হয়েছে।

475db00d05d03ab8.png

আরও বিস্তারিত তথ্যের জন্য DebugView হেল্প সেন্টার আর্টিকেলটি দেখুন।

৯. কাস্টম ডাইমেনশন এবং মেট্রিক্স সক্রিয় করুন

ডিফল্টরূপে, Google Analytics for Firebase মোট ইভেন্টের সংখ্যা সংগ্রহ করে। আপনার আগ্রহের প্রতিটি ইভেন্ট প্যারামিটারের জন্য, আপনাকে সেই প্যারামিটারের রিপোর্টিং স্পষ্টভাবে চালু করতে হবে। এরপর Google Analytics for Firebase কাস্টম প্যারামিটারগুলোর পরিসংখ্যান দেখানোর জন্য অতিরিক্ত কার্ড প্রদর্শন করতে পারে।

কাস্টম ডাইমেনশন এবং মেট্রিক নিবন্ধন করতে:

  1. Firebase কনসোলে যান এবং আপনার আগে তৈরি করা Awesome Drawing Quiz প্রজেক্টটি নির্বাচন করুন।
  2. নেভিগেশন মেনু থেকে অ্যানালিটিক্স > ইভেন্টস-এ ক্লিক করুন।
  1. কাস্টম সংজ্ঞা পরিচালনা করুন -এ ক্লিক করুন।
  2. কাস্টম ডাইমেনশন ট্যাবে, কাস্টম ডাইমেনশন তৈরি করুন -এ ক্লিক করুন।
  3. ইভেন্ট প্যারামিটার নামের ফিল্ডে level_name লিখুন এবং প্যারামিটার নিবন্ধন সম্পন্ন করতে সেভ-এ ক্লিক করুন।

3d20ee9d7de74e9b.png

  1. এরপর, কাস্টম মেট্রিক্স ট্যাবটি নির্বাচন করুন এবং কাস্টম মেট্রিক্স তৈরি করুন- এ ক্লিক করুন।
  2. নিম্নলিখিত প্যারামিটারগুলোর জন্য প্যারামিটারের নাম এবং পরিমাপের একক লিখুন।

প্যারামিটার নাম

প্যারামিটার টাইপ

পরিমাপের একক

চেষ্টার সংখ্যা

সংখ্যা

মান

ইঙ্গিত_ব্যবহৃত

সংখ্যা

মান

অতিবাহিত সময় সেকেন্ড

সংখ্যা

সেকেন্ড

সঠিক উত্তরের সংখ্যা

সংখ্যা

মান

১০. ইভেন্ট রিপোর্ট থেকে তথ্য জানুন

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

কোন লেভেলে সবচেয়ে বেশি ভুল উত্তর রয়েছে?

এই প্রশ্নের উত্তর দিতে হলে, আপনাকে খুঁজে বের করতে হবে প্রতিটি লেভেলে কতগুলো level_wrong_answer ইভেন্ট ট্রিগার হয়েছিল।

ইভেন্ট রিপোর্ট থেকে level_wrong_answer এ ক্লিক করুন। level_wrong_answer ইভেন্ট রিপোর্টে, level_name কার্ডটি খুঁজুন। আপনি সেই কার্ডে level_name প্যারামিটারের সাথে সম্পর্কিত মানগুলি নিম্নরূপ দেখতে পাবেন।

25da426bbc0c612c.png

উপরের স্ক্রিনশট অনুযায়ী, আপনি সহজেই দেখতে পাচ্ছেন যে 'হরাইজন' লেভেলে সবচেয়ে বেশি ভুল উত্তর রয়েছে, যার মানে এটি অন্যান্য লেভেলের তুলনায় ব্যবহারকারীদের জন্য বেশি কঠিন।

এখান থেকে প্রাপ্ত তথ্যের ভিত্তিতে, আপনি উচ্চ রিটেনশন রেট বজায় রাখার জন্য নতুন ব্যবহারকারীদের কঠিন লেভেল না দেওয়ার সিদ্ধান্ত নিতে পারেন।

গড়ে একটি লেভেল পার করতে কতবার চেষ্টা করা হয়েছিল?

‘অসাম ড্রয়িং কুইজ’ -এ ব্যবহারকারীরা প্রতিটি লেভেলের উত্তর যতবার খুশি জমা দিতে পারেন।

যেহেতু আপনি level_success ইভেন্টে number_of_attempts প্যারামিটারের জন্য প্যারামিটার রিপোর্টিং চালু করেছেন, তাই আপনি সেই প্যারামিটারের বিস্তারিত মেট্রিক্স দেখতে পারবেন।

ইভেন্ট রিপোর্ট থেকে level_success ইভেন্টটিতে ক্লিক করুন। level_success ইভেন্ট রিপোর্টে, number_of_attemps কার্ডটি খুঁজুন। আপনি সেই কার্ডে চেষ্টার গড় সংখ্যা নিম্নরূপ দেখতে পাবেন:

43de290f9f1a0ac9.png

এখান থেকে পাওয়া তথ্য ব্যবহার করে আপনি গেমটির গড় অসুবিধা অপ্টিমাইজ করতে পারেন। উদাহরণস্বরূপ, যদি গড় চেষ্টার সংখ্যা ১-এর খুব কাছাকাছি হয়, তাহলে আপনি গেমটিকে আরেকটু বেশি চ্যালেঞ্জিং করার কথা বিবেচনা করতে পারেন।

ব্যবহারকারীরা কি শেষ পর্যন্ত একটি লেভেল পার করতে ব্যর্থ হলেও, ইঙ্গিত পেয়ে প্রশ্নটি সমাধান করার চেষ্টা করেছিলেন?

যখন কোনো ব্যবহারকারী একটি লেভেল এড়িয়ে যাওয়ার সিদ্ধান্ত নেয়, তখন একটি level_fail ইভেন্ট ট্রিগার হয়। ব্যবহারকারীর এই সিদ্ধান্তের পেছনে অনেক কারণ থাকতে পারে।

তবে, যেহেতু একটি রিওয়ার্ডেড ভিডিও অ্যাড দেখার পর গেমটি তাদের একটি ইঙ্গিত দিতে পারে, তাই ব্যবহারকারী সেই ইঙ্গিতের সাহায্যে লেভেলটি পার করার চেষ্টা করেছিল কিনা তা জানা গুরুত্বপূর্ণ।

ইভেন্ট রিপোর্ট থেকে level_fail ইভেন্টটিতে ক্লিক করুন। level_fail ইভেন্ট রিপোর্টে, hint_used কার্ডটি খুঁজুন। আপনি hint_used ইভেন্ট প্যারামিটারগুলোর গড় সংখ্যা দেখতে পাবেন। লক্ষ্য করুন যে, যদি কোনো হিন্ট ব্যবহার করা হয়ে থাকে তবে প্যারামিটারটির মান ১ এবং যদি কোনো হিন্ট ব্যবহার করা না হয়ে থাকে তবে এর মান ০।

313814372cd7c8a4.png

যদি hint_used কার্ডের সংখ্যাগুলো ০-এর কাছাকাছি হয়, তাহলে এটি এই সংকেত দেয় যে পুরস্কারটি (ইঙ্গিতটি) এই ব্যবহারকারীদের জন্য যথেষ্ট সহায়ক নয়। এছাড়াও, আপনি একটি রিওয়ার্ডেড ভিডিও অ্যাড থেকে আয় বাড়ানোর সুযোগ হারাচ্ছেন।

সুতরাং, আপনার আরও বড় পুরস্কার দেওয়ার কথা বিবেচনা করা উচিত, যাতে ব্যবহারকারীরা গেমটির সাথে আরও গভীরভাবে যুক্ত হতে পারে, যা রিওয়ার্ডেড ভিডিও অ্যাডস থেকে আপনার আয় বাড়িয়ে দেবে।

প্রতিটি গেমে গড়ে কয়টি লেভেল শেষ করা হয়েছিল?

Awesome Drawing Quiz-এর প্রতিটি গেমে মোট ৬টি লেভেল রয়েছে। ব্যবহারকারী ৬টি লেভেল শেষ করার পর (প্রতিটি লেভেলে তিনি সফল হোন বা ব্যর্থ হোন না কেন), number_of_correct_answers প্যারামিটারসহ একটি game_complete ইভেন্ট ট্রিগার হয়। number_of_correct_answers প্যারামিটারটি নির্দেশ করে যে ব্যবহারকারী কতগুলো লেভেলে সঠিক উত্তর দিয়েছেন।

ইভেন্ট রিপোর্ট থেকে game_complete ইভেন্টটিতে ক্লিক করুন। game_complete ইভেন্ট রিপোর্টে, number_of_correct_answers কার্ডটি খুঁজুন। আপনি number_of_correct_answers ইভেন্ট প্যারামিটারগুলোর গড় সংখ্যা দেখতে পাবেন।

d9eeaa019d1bceb4.png

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

১১. সব হয়ে গেছে!

আপনি AdMob+Firebase 101 অ্যান্ড্রয়েড কোডল্যাবটি সম্পন্ন করেছেন। এই কোডল্যাবের সম্পূর্ণ কোডটি আপনি এখানে খুঁজে পাবেন। android_studio_folder.png ১০১-সম্পূর্ণ_এবং_১০২-ভিত্তি ফোল্ডার।

AdMob+Firebase কোডল্যাবের পরবর্তী অংশে, আপনি শিখবেন কীভাবে একটি ফানেল ব্যবহার করে অ্যাপের ইভেন্ট ফ্লোকে দৃশ্যমান করা যায়। পরবর্তী অংশে আরও আলোচনা করা হবে কীভাবে অ্যাপ আপডেট ছাড়াই গেমের প্যারামিটার ভ্যালু অপটিমাইজ করার জন্য রিমোট কনফিগ এবং এ/বি টেস্টিং ব্যবহার করতে হয়।