আপনার উপার্জনের সোর্স পরিমাপ করলে তা আপনার ব্যবহারকারীদের লাইফটাইম ভ্যালু বুঝতে এবং আপনার অ্যাপ ব্যবসা বাড়াতে সাহায্য করে। এই নির্দেশিকা থেকে আপনি জানতে পারবেন যে কীভাবে আপনার প্ল্যাটফর্মের জন্য বিজ্ঞাপন থেকে উপার্জন পরিমাপ করার সুবিধা সেট-আপ করবেন।
বিজ্ঞাপন থেকে হওয়া উপার্জন পরিমাপ করার সুবিধা সেট-আপ করার পরে, আপনি নিম্নলিখিত যেকোনও একটি কাজ করতে পারবেন:
আপনার অ্যাপের বিজ্ঞাপন থেকে উপার্জনে অবদান রাখে এমন ব্যবহারকারীর অ্যাকশন বিশ্লেষণ করুন।
Firebase A/B Testing ব্যবহার করে এক্সপেরিমেন্ট চালান যাতে কোন ফিচার আপনার অ্যাপের বিজ্ঞাপন থেকে উপার্জন উন্নত করে তা খুঁজে পেতে পারেন অথবা Remote Config পছন্দমতো সেট করা ব্যবহার করে বিজ্ঞাপনের অভিজ্ঞতা পছন্দমতো সেট করুন।
বিজ্ঞাপন থেকে উপার্জনের লেভেলের উপর ভিত্তি করে Firebase Remote Config ব্যবহার করে ব্যবহারকারী অডিয়েন্স তৈরি করুন এবং ব্যবহারকারীর অভিজ্ঞতা কাস্টমাইজ করুন।
শুরু করার আগে
আপনি এখনও করে না থাকলে, নিম্নলিখিত টাস্কগুলি সম্পূর্ণ করতে ভুলবেন না:
Analytics-এর সাথে শুরু করুন-এ যেভাবে বলা হয়েছে সেইভাবে আপনার প্রোজেক্ট ও অ্যাপ সেট-আপ করুন।
আপনি Firebase প্রোজেক্টকে Google Analytics অ্যাকাউন্টের সাথে লিঙ্ক করেছেন কিনা তা ভাল করে দেখে নিন।
আপনার অ্যাপে Android SDK v17.6.0+ বা Apple প্ল্যাটফর্ম SDK v6.34.0+ অন্তর্ভুক্ত করেছেন কিনা তা নিশ্চিত করুন।
প্রয়োগ
আপনি Google Analytics ব্যবহার করে AdMob, AppLovin এবং ironSource-এর মতো মনিটাইজেশন প্ল্যাটফর্মে বিজ্ঞাপন দেখানোর মাধ্যমে বিজ্ঞাপন থেকে হওয়া উপার্জন পরিমাপ করতে পারেন। বিজ্ঞাপন থেকে উপার্জন পরিমাপ করতে, আপনার অ্যাপে ব্যবহারকারী যখনই কোনও বিজ্ঞাপন দেখবেন, আপনাকে
ad_impression ইভেন্ট লগ করতে হবে। এইসব ইভেন্টে
বিজ্ঞাপন প্ল্যাটফর্ম, সোর্স, মুদ্রা ও ভ্যালুর মতো বিবরণ থাকে।
AdMob
আপনি AdMob প্ল্যাটফর্ম ব্যবহার করলে,
আপনার AdMob অ্যাপ Firebase-এর সাথে লিঙ্ক করুন এবং Analytics
বিজ্ঞাপন থেকে উপার্জন অটোমেটিক পরিমাপ করার সুবিধা চালু করুন। Google Analytics-এর জন্য Firebase SDK
অটোমেটিক ad_impression ইভেন্ট লগ করে যখনই
আপনার ব্যবহারকারীরা কোনও বিজ্ঞাপনের ইম্প্রেশন দেখেন।
অন্যান্য বিজ্ঞাপন মনিটাইজেশন প্ল্যাটফর্ম
AppLovin এবং ironSource-এর মতো প্ল্যাটফর্ম ইম্প্রেশন-লেভেল উপার্জন সংক্রান্ত ডেটা প্রদান করে
যা আপনি Google Analytics
ad_impression
ইভেন্ট লগ করতে ব্যবহার করতে পারেন।
নিচের বিভাগগুলিতে কয়েকটি আলাদা বিজ্ঞাপন মনিটাইজেশন প্ল্যাটফর্মের জন্য প্রয়োগের উদাহরণ দেখানো হয়েছে।
AppLovin
Swift
func didPayRevenue(_ impressionData: MAAd?) { if let impressionData = impressionData { Analytics.logEvent( AnalyticsEventAdImpression, parameters: [ AnalyticsParameterAdPlatform: "AppLovin", AnalyticsParameterAdUnitName: impressionData.adUnitIdentifier, AnalyticsParameterAdFormat: impressionData.format, AnalyticsParameterValue: impressionData.revenue, AnalyticsParameterCurrency: "USD", // All Applovin revenue is sent in USD AnalyticsParameterAdSource: impressionData.networkName, ]) } }
Objective-C
- (void)didPayRevenueForAd:(MAAd *)impressionData { [FIRAnalytics logEventWithName:kFIREventAdImpression parameters: @{ kFIRParameterAdPlatform: @"AppLovin", kFIRParameterAdSource: impressionData.networkName, kFIRParameterAdFormat: impressionData.format, kFIRParameterAdUnitName: impressionData.adUnitIdentifier, kFIRParameterCurrency: @"USD", // All Applovin revenue is sent in USD kFIRParameterValue: impressionData.revenue }]; }
Kotlin
override fun onAdRevenuePaid(impressionData: MaxAd?) { impressionData?.let { firebaseAnalytics = Firebase.analytics firebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION) { param(FirebaseAnalytics.Param.AD_PLATFORM, "appLovin") param(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.adUnitId) param(FirebaseAnalytics.Param.AD_FORMAT, impressionData.format.label) param(FirebaseAnalytics.Param.AD_SOURCE, impressionData.networkName) param(FirebaseAnalytics.Param.VALUE, impressionData.revenue) param(FirebaseAnalytics.Param.CURRENCY, "USD") // All Applovin revenue is sent in USD } } }
Java
@Override public void onAdRevenuePaid(MaxAd impressionData) { double revenue = impressionData.getRevenue(); // In USD mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); Bundle params = new Bundle(); params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "appLovin"); params.putString(FirebaseAnalytics.Param.AD_SOURCE, impressionData.getNetworkName()); params.putString(FirebaseAnalytics.Param.AD_FORMAT, impressionData.getFormat().getLabel()); params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.getAdUnitId()); params.putDouble(FirebaseAnalytics.Param.VALUE, revenue); params.putString(FirebaseAnalytics.Param.CURRENCY, "USD"); // All Applovin revenue is sent in USD mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params); }
Unity
// Attach callbacks based on the ad format(s) you are using MaxSdkCallbacks.Interstitial.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent; MaxSdkCallbacks.Rewarded.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent; MaxSdkCallbacks.Banner.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent; MaxSdkCallbacks.MRec.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent; private void OnAdRevenuePaidEvent(string adUnitId, MaxSdkBase.AdInfo impressionData) { double revenue = impressionData.Revenue; var impressionParameters = new[] { new Firebase.Analytics.Parameter("ad_platform", "AppLovin"), new Firebase.Analytics.Parameter("ad_source", impressionData.NetworkName), new Firebase.Analytics.Parameter("ad_unit_name", impressionData.AdUnitIdentifier), new Firebase.Analytics.Parameter("ad_format", impressionData.AdFormat), new Firebase.Analytics.Parameter("value", revenue), new Firebase.Analytics.Parameter("currency", "USD"), // All AppLovin revenue is sent in USD }; Firebase.Analytics.FirebaseAnalytics.LogEvent("ad_impression", impressionParameters); }
ironSource
Swift
func impressionDataDidSucceed(_ impressionData: ISImpressionData!) { Analytics.logEvent( AnalyticsEventAdImpression, parameters: [ AnalyticsParameterAdPlatform: "ironSource", AnalyticsParameterAdSource: impressionData.ad_network ?? "No ad_network", AnalyticsParameterAdFormat: impressionData.ad_unit ?? "No ad_unit", AnalyticsParameterAdUnitName: impressionData.instance_name ?? "No instance_name", AnalyticsParameterCurrency: "USD", AnalyticsParameterValue: impressionData.revenue ?? 0, ]) }
Objective-C
- (void)impressionDataDidSucceed:(ISImpressionData *)impressionData { [FIRAnalytics logEventWithName:kFIREventAdImpression parameters:@{ kFIRParameterAdPlatform: @"ironSource", kFIRParameterAdSource: impressionData.ad_network, kFIRParameterAdFormat: impressionData.ad_unit, kFIRParameterAdUnitName: impressionData.instance_name, kFIRParameterCurrency: @"USD", kFIRParameterValue: impressionData.revenue }]; }
Kotlin
override fun onImpressionSuccess(impressionData: ImpressionData) { // The onImpressionSuccess will be reported when the rewarded video and interstitial ad is // opened. // For banners, the impression is reported on load success. Log.d(TAG, "onImpressionSuccess" + // impressionData) firebaseAnalytics = Firebase.analytics firebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION) { param(FirebaseAnalytics.Param.AD_PLATFORM, "ironSource") param(FirebaseAnalytics.Param.AD_SOURCE, impressionData.adNetwork) param(FirebaseAnalytics.Param.AD_FORMAT, impressionData.adUnit) param(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.instanceName) param(FirebaseAnalytics.Param.CURRENCY, "USD") param(FirebaseAnalytics.Param.VALUE, impressionData.revenue) } }
Java
@Override public void onImpressionSuccess(ImpressionData impressionData) { // The onImpressionSuccess will be reported when the rewarded video and interstitial ad is opened. // For banners, the impression is reported on load success. Log.d(TAG, "onImpressionSuccess" + impressionData); mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); if (impressionData != null) { Bundle bundle = new Bundle(); bundle.putString(FirebaseAnalytics.Param.AD_PLATFORM, "ironSource"); bundle.putString(FirebaseAnalytics.Param.AD_SOURCE, impressionData.getAdNetwork()); bundle.putString(FirebaseAnalytics.Param.AD_FORMAT, impressionData.getAdUnit()); bundle.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.getInstanceName()); bundle.putString(FirebaseAnalytics.Param.CURRENCY, "USD"); bundle.putDouble(FirebaseAnalytics.Param.VALUE, impressionData.getRevenue()); mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, bundle); } }
Unity
private void ImpressionSuccessEvent(IronSourceImpressionData impressionData) { if (impressionData != null) { Firebase.Analytics.Parameter[] AdParameters = { new Firebase.Analytics.Parameter("ad_platform", "ironSource"), new Firebase.Analytics.Parameter("ad_source", impressionData.adNetwork), new Firebase.Analytics.Parameter("ad_unit_name", impressionData.getInstanceName), new Firebase.Analytics.Parameter("ad_format", impressionData.getAdUnit), new Firebase.Analytics.Parameter("currency","USD"), new Firebase.Analytics.Parameter("value", impressionData.getRevenue) }; Firebase.Analytics.FirebaseAnalytics.LogEvent("ad_impression", AdParameters); } }
প্রয়োগ করার সময় যেসব বিষয় বিবেচনা করতে হবে
Google Ads-কে আপনার
ad_impression প্রসেস করার অনুমতি দিতে, currency এবং value প্যারামিটার (নিচে বর্ণনা করা হয়েছে)
দুটিই অন্তর্ভুক্ত করতে ভুলবেন না। ব্যবহারকারীদের বেশি বা কম মূল্যায়ন করা প্রতিরোধ করতে উভয়
প্যারামিটার যতটা সম্ভব সঠিক হতে হবে।
কারেন্সি প্যারামিটার
currency প্যারামিটার
(iOS+
| Android
| Unity)
তিন অক্ষরের স্ট্রিং হিসেবে
ISO_4217
ফর্ম্যাটে (যেমন, "USD") পাঠাতে হবে। কিছু বিজ্ঞাপন মনিটাইজেশন প্ল্যাটফর্ম মুদ্রা বাদ দেয়,
যার জন্য আপনাকে প্যারামিটার হার্ডকোড করতে হতে পারে।
ভ্যালু প্যারামিটার
value প্যারামিটার
(iOS+
| Android
| Unity)
দশমিক বিভাজক হিসেবে ডট ব্যবহার করে পাঠাতে হবে। উপরে উল্লেখ করা প্রয়োজনীয় ফর্ম্যাটে ফিট করার জন্য
কিছু প্ল্যাটফর্ম থেকে পাওয়া ভ্যালু আপনাকে ট্রান্সফর্ম করতে হতে পারে। কিছু
প্ল্যাটফর্ম সংখ্যাসূচক ফর্ম্যাট লোকালাইজ করে এবং দশমিক বিভাজক হিসেবে কমা ব্যবহার করে। কিছু
ক্ষেত্রে, কোনও প্ল্যাটফর্ম হয়ত কোনও ভ্যালু পাঠায় না।
এছাড়াও, মানটি ডাবল বা লংয়ের মতো সংখ্যাসূচক ধরনের হতে হবে।
যেমন, 1000.01, 0.001 এবং 1.00 হল
সঠিক
যাচাইকরণ
Google Analytics ডেভেলপমেন্ট সাইকেল জুড়ে আপনার ইমপ্লিমেন্টেশন যাচাই করার জন্য একাধিক ফিচার অফার করে।
DebugView
আপনার প্রয়োগ প্রথমবার পরীক্ষা করার সময়, কনসোলে আপনার টেস্টad_impressionডেটা দেখতে DebugView ব্যবহার করুন। আপনি কোনওad_impressionইভেন্ট বেছে নিলে, প্যারামিটার প্যানেলে (স্ক্রিনের ডানদিকে) যেসব প্যারামিটার পাঠাচ্ছেন সেগুলি পর্যালোচনা করতে পারবেন। এটি আপনাকে সঠিক তথ্য প্রসেস করা হচ্ছে কিনা তা কনফার্ম করতে সাহায্য করে।রিয়েল-টাইম
আপনার অ্যাপ ডিপ্লয় করার পরে, Google Analytics রিয়েল-টাইম রিপোর্ট ব্যবহার করে নিশ্চিত করুন যে ইমপ্লিমেন্টেশন সঠিকভাবে কাজ করছে। রিয়েল-টাইম রিপোর্টে, ইভেন্টের নাম অনুযায়ী ইভেন্টের সংখ্যা কার্ড দেখুন এবং গত ৩০ মিনিটের ইভেন্ট ও প্যারামিটারের বিবরণ দেখতে ad_impression বেছে নিন।BigQuery
ad_impressionইভেন্টের এক বা একাধিক দিনের স্যাম্পেল এক্সট্র্যাক্ট করতে BigQuery এক্সপোর্ট ব্যবহার করুন। এই এক্সট্র্যাক্ট করা স্যাম্পেল ব্যবহার করে সমস্যা খুঁজুন, যেমন শূন্য বা সেট না করা ভ্যালু এবং আপনার কোডে কোনও হ্যান্ডেল না করা ব্যবহারের ক্ষেত্রে সমাধান প্রয়োগ করুন।
পরবর্তী ধাপ
Firebase কনসোলে আপনার Analytics ড্যাশবোর্ড অথবা Analytics কনসোলে আপনার লিঙ্ক করা Analytics প্রপার্টি দেখুন। বিজ্ঞাপন থেকে উপার্জন, ব্যবহারকারী পিছু গড় উপার্জন (ARPU) এবং লাইফটাইম ভ্যালু (LTV)-এর মতো মেট্রিকের মধ্যে অন্তর্ভুক্ত করা হয়।