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

১. ভূমিকা

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

প্রয়োজনীয় ফাইল প্রস্তুত করুন

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

টার্মিনাল খুলুন এবং রিপোজিটরি রুট ডিরেক্টরিতে যান। এরপর, প্রজেক্টে প্রয়োজনীয় ফাইলগুলো কপি করার জন্য টার্মিনাল থেকে ./gradlew :prepareThirdPartyFiles (উইন্ডোজে gradlew.bat :prepareThirdPartyFiles ) কমান্ডটি চালান।

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

ইউনিটি চালু করুন, স্বাগত স্ক্রিনে "Open" নির্বাচন করুন। তারপর আপনার ডাউনলোড করা কোড থেকে 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. সফলভাবে তৈরি হলে, আপনি নিচের মতো নির্দেশাবলী দেখতে পাবেন।

4bc1b3b341a5a81c.png

  1. ইউনিটি প্রজেক্টে ফিরে যান এবং পূর্ববর্তী ধাপে তৈরি করা AdMob অ্যাপ আইডি ও অ্যাড ইউনিট আইডি কনস্ট্যান্টগুলো দিয়ে আপডেট করুন।

Ads/AdManager.cs

namespace AwesomeDrawingQuiz.Ads {
    public class AdManager {

        public const string APP_ID_ANDROID = "YOUR_ADMOB_APP_ID";
        
        ...

        #elif UNITY_ANDROID
        private const string APP_ID = APP_ID_ANDROID;
        public const string AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";

        ...
    }
}

iOS এর জন্য সেটআপ

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

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

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

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

7672f41ec611101b.png

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

6d067814a2c38264.png

  1. সফলভাবে তৈরি হলে, আপনি নিচের মতো নির্দেশাবলী দেখতে পাবেন।

4bc1b3b341a5a81c.png

  1. ইউনিটি প্রজেক্টে ফিরে যান এবং পূর্ববর্তী ধাপে তৈরি করা AdMob অ্যাপ আইডি ও অ্যাড ইউনিট আইডি কনস্ট্যান্টগুলো দিয়ে আপডেট করুন।

Ads/AdManager.cs

namespace AwesomeDrawingQuiz.Ads {
    public class AdManager {

        public const string APP_ID_IOS = "YOUR_ADMOB_APP_ID";
        
        ...

        #elif UNITY_IOS
        private const string APP_ID = APP_ID_IOS;
        public const string AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";

        ...
    }
}

৪. গুগল মোবাইল অ্যাডস ইউনিটি প্লাগইন যোগ করুন

প্লাগইনটি আমদানি করুন

ইউনিটি অ্যাপে AdMob বিজ্ঞাপন দেখানোর জন্য, আপনাকে প্রজেক্টে Google Mobile Ads Unity Plugin-টি যোগ করতে হবে।

  1. Google Mobile Ads Unity Plugin 3.18.1 প্যাকেজটি ডাউনলোড করুন। (উল্লেখ্য যে, এই কোডল্যাবটি প্লাগইনের অন্য সংস্করণের সাথে সামঞ্জস্যপূর্ণ নাও হতে পারে)
  2. Awesome Drawing Quiz ইউনিটি প্রোজেক্টে, Assets > Import Package > Custom Package- এ যান।
  3. আপনার ডাউনলোড করা প্রজেক্টটিতে GoogleMobileAds.unitypackage- টি ইম্পোর্ট করুন।

AdMob অ্যাপ আইডি কনফিগার করুন

ইউনিটি এডিটরে, মেনু থেকে অ্যাসেটস > গুগল মোবাইল অ্যাডস > সেটিংস নির্বাচন করুন।

44fc84fe88235c1f.png

Google AdMob বিভাগের অধীনে থাকা ‘Enabled’ চেকবক্সে ক্লিক করে AdMob সক্রিয় করুন। তারপর নিম্নরূপভাবে AdMob অ্যাপ আইডিটি প্রবেশ করান:

  • অ্যান্ড্রয়েড: ca-app-pub-3940256099942544~3048611032
  • iOS: ca-app-pub-3940256099942544~2753522596

a6ad7402d4daf330.png

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

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

  1. ফায়ারবেস কনসোলে যান।
  2. 'Add Project' নির্বাচন করুন এবং আপনার প্রজেক্টটির নাম দিন 'Awesome Drawing Quiz'।

ইউনিটি অ্যাপটি যোগ করুন

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

ইউনিটি প্রজেক্টে ফায়ারবেস কনফিগারেশন ফাইলগুলো যোগ করুন

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

331c165d80ba105e.png

ফায়ারবেস অ্যানালিটিক্স এসডিকে যোগ করুন

  1. Firebase Unity SDK 5.5.0 ডাউনলোড করে আপনার সুবিধামত কোনো জায়গায় আনজিপ করুন।
  2. Awesome Drawing Quiz ইউনিটি প্রজেক্টটি খুলুন, এরপর Assets > Import Package > Custom Package- এ যান।
  3. আনজিপ করা SDK থেকে, রিমোট কনফিগ SDK ( dotnet4/FirebaseAnalytics.unitypackage ) ইম্পোর্ট করুন।
  4. ইউনিটি প্যাকেজ ইম্পোর্ট উইন্ডোতে, ইম্পোর্ট-এ ক্লিক করুন।

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

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

  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

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

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

f5fbf4565c5d8647.png

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

bbdf4d23fb08a519.pngad82d7e657945c4d.png

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

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

8c33687361f83a13.pngb048d6587c10e9df.png

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

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

ইভেন্টের নাম

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

প্যারামিটার

খেলা_শুরু

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

কোনোটিই না

স্তর_শুরু

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

স্তরের নাম

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

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

স্তরের নাম

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

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

ad_unit_id

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

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

ad_unit_id

স্তর_সফলতা

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

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

স্তর_ব্যর্থ

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

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

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

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

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

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

ইভেন্টের নাম

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

বর্ণনা

স্তর_শুরু

স্তরের নাম

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

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

স্তরের নাম

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

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

ad_unit_id

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

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

ad_unit_id

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

স্তর_সফলতা

স্তরের নাম

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

স্তর_সফলতা

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

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

স্তর_সফলতা

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

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

স্তর_সফলতা

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

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

স্তর_ব্যর্থ

স্তরের নাম

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

স্তর_ব্যর্থ

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

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

স্তর_ব্যর্থ

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

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

স্তর_ব্যর্থ

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

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

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

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

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

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

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

প্রথমে, Assets/Scripts ফোল্ডারের অধীনে Analytics নামে একটি নতুন ফোল্ডার তৈরি করুন। এরপর, Analytics ফোল্ডারের অধীনে QuizAnalytics.cs নামে একটি নতুন C# স্ক্রিপ্ট তৈরি করুন।

নিচের কোডটি QuizAnalytics.cs ফাইলে যোগ করুন।

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

using Firebase.Analytics;

namespace AwesomeDrawingQuiz.Analytics {

    public class QuizAnalytics {

        private const string EVENT_AD_REWARD_PROMPT = "ad_reward_prompt";

        private const string EVENT_AD_REWARD_IMPRESSION = "ad_reward_impression";

        private const string EVENT_LEVEL_FAIL = "level_fail";

        private const string EVENT_LEVEL_SUCCESS = "level_success";

        private const string EVENT_LEVEL_WRONG_ANSWER = "level_wrong_answer";

        private const string EVENT_GAME_START = "game_start";

        private const string EVENT_GAME_COMPLETE = "game_complete";

        private const string PARAM_AD_UNIT_ID = "ad_unit_id";

        private const string PARAM_ELAPSED_TIME_SEC = "elapsed_time_sec";

        private const string PARAM_HINT_USED = "hint_used";

        private const string PARAM_NUMBER_OF_ATTEMPTS = "number_of_attempts";

        private const string PARAM_NUMBER_OF_CORRECT_ANSWERS = "number_of_correct_answers";

        public const string SCREEN_MAIN = "main";

        public const string SCREEN_GAME = "game";

        public static void LogGameStart() {
            FirebaseAnalytics.LogEvent(EVENT_GAME_START);
        }

        public static void LogLevelStart(string levelName) {
            FirebaseAnalytics.LogEvent(FirebaseAnalytics.EventLevelStart, 
                FirebaseAnalytics.ParameterLevelName, levelName);
        }

        public static void LogLevelWrongAnswer(string levelName) {
            FirebaseAnalytics.LogEvent(EVENT_LEVEL_WRONG_ANSWER, 
                FirebaseAnalytics.ParameterLevelName, levelName);
        }

        public static void LogAdRewardPrompt(string adUnitId) {
            FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_PROMPT, PARAM_AD_UNIT_ID, adUnitId);
        }

        public static void LogAdRewardImpression(string adUnitId) {
            FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_IMPRESSION, PARAM_AD_UNIT_ID, adUnitId);
        }

        public static void LogLevelSuccess(
            string levelName, int numberOfAttemps, int elapsedTimeInSec, bool hintUsed
        ) {
            FirebaseAnalytics.LogEvent(EVENT_LEVEL_SUCCESS, new Parameter[] {
                new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
                new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttemps),
                new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
                new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
            });
        }

        public static void LogLevelFail(
            string levelName, int numberOfAttempts, int elapsedTimeInSec, bool hintUsed
        ) {
            FirebaseAnalytics.LogEvent(EVENT_LEVEL_FAIL, new Parameter[] {
                new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
                new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts),
                new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
                new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
            });
        }

        public static void LogGameComplete(int numberOfCorrectAnswers) {
            FirebaseAnalytics.LogEvent(EVENT_GAME_COMPLETE, 
                PARAM_NUMBER_OF_CORRECT_ANSWERS, numberOfCorrectAnswers);
        }

        public static void SetScreenName(string screenName) {
            FirebaseAnalytics.SetCurrentScreen(screenName, null);
        }
    }
}

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

Assets/Scripts/Scenes ফোল্ডারের অধীনে থাকা Game.cs ফাইলটি খুলুন। AwesomeDrawingQuiz.Analytics নেমস্পেসের অধীনে থাকা QuizAnalytics ক্লাসটি ব্যবহার করার জন্য, নিচের মতো করে using ডিরেক্টিভটি যোগ করুন।

দৃশ্য/গেম.সিএস

using AwesomeDrawingQuiz.Ads;

// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;

...

namespace AwesomeDrawingQuiz.Scene {
   ...
}

এরপরে, Start() ফাংশনের ভিতরে, বর্তমান স্ক্রিনের নাম পরিবর্তন করার জন্য QuizAnalytics.SetScreenName() কল করুন। এছাড়াও, একটি গেম শুরু হয়েছে তা বোঝানোর জন্য QuizAnalytics.LogGameStart() কল করুন।

দৃশ্য/গেম.সিএস

void Start () {
    // TODO: Log screen name (101)
    QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_GAME);

    ...

    SetHintButtonEnabled(false);

    // TODO: Log game_start event (101)
    QuizAnalytics.LogGameStart();
    
    ...
}

এরপরে, কলব্যাক ফাংশনগুলিতে, কাস্টম ইভেন্টগুলি লগ করার জন্য নিম্নলিখিতভাবে কলগুলি যুক্ত করুন:

দৃশ্য/গেম.সিএস

public void OnClickHint() {
    // TODO: Log ad_reward_prompt event (101)
    QuizAnalytics.LogAdRewardPrompt(AdManager.AD_UNIT_ID);

    ...
}

...
  
public void OnAdStarted(object sender, EventArgs args) {
    // TODO: Log ad_reward_impression event (101)
    QuizAnalytics.LogAdRewardImpression(AdManager.AD_UNIT_ID);
}

...

public void OnGameOver(object sender, GameOverEventArgs args) {
    // TODO: Log game_complete event (101)
    QuizAnalytics.LogGameComplete(args.NumCorrectAnswers);

    ...
}

public void OnLevelCleared(object sender, LevelClearEventArgs args) {
    // TODO: Log level_success event (101)
    QuizAnalytics.LogLevelSuccess(
        args.Drawing.word, args.NumAttempts, args.ElapsedTimeInSeconds, args.IsHintUsed);

    ...
}

public void OnLevelSkipped(object sender, LevelSkipEventArgs args) {
    // TODO: Log level_fail event (101)
    QuizAnalytics.LogLevelFail(
        args.Drawing.word, args.NumAttempts, args.ElapsedTimeInSeconds, args.IsHintUsed);
}

public void OnNewLevel(object sender, NewLevelEventArgs args) {
    // TODO: Log level_start event (101)
    QuizAnalytics.LogLevelStart(args.Drawing.word);

    ...
}

public void OnWrongAnwser(object sender, WrongAnswerEventArgs args) {
    // TODO: Log level_wrong_answer event (101)
    QuizAnalytics.LogLevelWrongAnswer(args.Drawing.word);

    ...
}

অবশেষে, Assets/Scripts/Scenes ফোল্ডারের অধীনে থাকা Main.cs ফাইলটি আপডেট করুন। Firebase SDK-এর যেকোনো মেথড কল করার আগে Firebase প্রস্তুত আছে কিনা তা নিশ্চিত করে নেওয়া উচিত।

দৃশ্য/প্রধান.সিএস

using AwesomeDrawingQuiz.Ads;

// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;

...

namespace AwesomeDrawingQuiz.Scene {
    public class Main : MonoBehaviour {

        ...

        void Start () {
            Screen.sleepTimeout = SleepTimeout.SystemSetting;

            #if UNITY_ANDROID
            // Disable 'Start a game' button until
            // Firebase dependencies are ready to use on the Android
            buttonStartGame.interactable = false;

            // TODO: Check Google Play Services on Android (101)
            // Check Google Play Services on Android device is up to date
            Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
                var dependencyStatus = task.Result;
                if (dependencyStatus == Firebase.DependencyStatus.Available) {
                    Debug.Log("All Firebase services are available");
                    
                    // TODO: Set screen name (101)
                    QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
                } else {
                    throw new System.InvalidOperationException(System.String.Format(
                        "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
                }
            }).ContinueWith(task => {
                // Enable 'Start a game' button
                UnityMainThreadDispatcher.Instance()
                    .Enqueue(() => buttonStartGame.interactable = true);
            });
            #else
            
            // TODO: Set screen name (101)
            QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
            #endif
        }

        ...
    }
}   

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

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

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

অ্যান্ড্রয়েডে ডিবাগ মোড চালু করুন

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

প্রথমে, অ্যান্ড্রয়েড স্টুডিওতে টার্মিনাল টুলটি খুলুন। এটি নিচের টুলবারে অবস্থিত।

c8dc1b4f08a224b8.png

এরপর নিচের কমান্ডটি চালান (নিশ্চিত করুন যে পরীক্ষাধীন অ্যান্ড্রয়েড ডিভাইসটি আপনার কম্পিউটারের সাথে সংযুক্ত আছে অথবা অ্যান্ড্রয়েড এমুলেটর চালু আছে):

adb shell setprop debug.firebase.analytics.app com.google.codelab.awesomedrawingquiz

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

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

iOS-এ ডিবাগ মোড চালু করুন

আপনার ডেভেলপমেন্ট ডিভাইসে অ্যানালিটিক্স ডিবাগ মোড চালু করতে, Xcode-এ নিম্নলিখিত কমান্ড লাইন আর্গুমেন্টটি উল্লেখ করুন:

-FIRDebugEnabled

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

-FIRDebugDisabled

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

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

827059255d09ac00.png

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

475db00d05d03ab8.png

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

১০. প্যারামিটার রিপোর্টিং সক্ষম করুন

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

কোনো ইভেন্টের জন্য কাস্টম প্যারামিটার নিবন্ধন করতে:

  1. Firebase কনসোলে যান এবং আপনার আগে তৈরি করা Awesome Drawing Quiz প্রজেক্টটি নির্বাচন করুন।
  2. ন্যাভিগেশন মেনু থেকে ইভেন্টস- এ ক্লিক করুন।
  1. যে ইভেন্টটি আপনি পরিবর্তন করতে চান, সেই সারির মধ্যে ক্লিক করুন। 73afe611adf58774.png প্যারামিটার রিপোর্টিং সম্পাদনা করুন।

aad40de06ee0c3ad.png

  1. 'Enter parameter name' ফিল্ডে, আপনি যে প্যারামিটারটি নিবন্ধন করতে চান তার নাম লিখুন।

দ্রষ্টব্য: যদি কোনো মিল খুঁজে না পাওয়া যায়, তবে শুধু প্যারামিটারের নামটি প্রবেশ করিয়ে ADD-এ ক্লিক করুন। e066c761aae4797f.png ৫. নিচের টেবিলটি দেখুন এবং সেই অনুযায়ী Type ফিল্ডটি Text অথবা Number- এ সেট করুন। সংখ্যাসূচক প্যারামিটারের জন্য, Unit of Measurement ফিল্ডটিও সেট করতে ভুলবেন না। ৬. সেটআপটি শেষ করতে SAVE বাটনে ক্লিক করুন।

নীচে তালিকাভুক্ত প্রতিটি ইভেন্টের জন্য প্যারামিটার রিপোর্টিং সক্ষম করুন।

ইভেন্টের নাম

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

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

পরিমাপের একক

স্তর_শুরু

স্তরের নাম

পাঠ্য

প্রযোজ্য নয়

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

স্তরের নাম

পাঠ্য

প্রযোজ্য নয়

স্তর_সফলতা

স্তরের নাম

পাঠ্য

প্রযোজ্য নয়

স্তর_সফলতা

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

সংখ্যা

মান

স্তর_সফলতা

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

সংখ্যা

সেকেন্ড

স্তর_সফলতা

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

সংখ্যা

মান

স্তর_ব্যর্থ

স্তরের নাম

পাঠ্য

প্রযোজ্য নয়

স্তর_ব্যর্থ

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

সংখ্যা

মান

স্তর_ব্যর্থ

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

সংখ্যা

সেকেন্ড

স্তর_ব্যর্থ

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

সংখ্যা

মান

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

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

সংখ্যা

মান

নিম্নলিখিত উদাহরণটি level_success ইভেন্টের জন্য কাস্টম প্যারামিটার রিপোর্টিং সেটআপ দেখায়:

6d569c8c27df2914.png

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

d1a37589d54bca6b.png

১১. ইভেন্ট রিপোর্ট থেকে তথ্য সংগ্রহ করুন।

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

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

এই প্রশ্নের উত্তর দিতে হলে, আপনাকে খুঁজে বের করতে হবে প্রতিটি লেভেলে কতগুলো 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 নির্দেশ করে যে ব্যবহারকারী কতগুলো লেভেল সম্পন্ন করেছে (সঠিক উত্তর দিয়েছে), তাই আপনি 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 কোডল্যাবের পরবর্তী অংশে, আপনি শিখবেন কীভাবে একটি ফানেল ব্যবহার করে অ্যাপের ইভেন্ট ফ্লোকে দৃশ্যমান করা যায়। এছাড়াও, অ্যাপ আপডেট ছাড়াই গেমের প্যারামিটার ভ্যালু অপটিমাইজ করার জন্য কীভাবে রিমোট কনফিগ এবং এ/বি টেস্টিং ব্যবহার করতে হয়, তাও এতে আলোচনা করা হবে।