আপনার আয়ের উৎস পরিমাপ করলে আপনার ব্যবহারকারীদের জীবনকাল কতটা মূল্যবান তা বুঝতে এবং আপনার অ্যাপ ব্যবসা বৃদ্ধি করতে সাহায্য করে। এই নির্দেশিকাটি আপনাকে দেখায় যে কীভাবে আপনার প্ল্যাটফর্মের জন্য বিজ্ঞাপন আয় পরিমাপ সেট আপ করবেন।
বিজ্ঞাপনের আয় পরিমাপ সেট আপ করার পরে, আপনি নিম্নলিখিত যেকোনো একটি করতে পারেন:
আপনার অ্যাপের বিজ্ঞাপন থেকে আয় বৃদ্ধিতে অবদান রাখে এমন ব্যবহারকারীর ক্রিয়াকলাপ বিশ্লেষণ করুন।
আপনার অ্যাপের বিজ্ঞাপনের আয়ের উন্নতির জন্য কোন বৈশিষ্ট্যগুলি কাজ করে তা খুঁজে বের করতে Firebase A/B Testing ব্যবহার করে পরীক্ষা চালান, অথবা Remote Config personalization ব্যবহার করে বিজ্ঞাপনের অভিজ্ঞতা ব্যক্তিগতকৃত করুন।
বিজ্ঞাপনের আয়ের স্তরের উপর ভিত্তি করে Firebase Remote Config ব্যবহার করে ব্যবহারকারীর দর্শক তৈরি করুন এবং ব্যবহারকারীর অভিজ্ঞতা তৈরি করুন ।
শুরু করার আগে
যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে নিম্নলিখিত কাজগুলি সম্পন্ন করতে ভুলবেন না:
"Get Started with Analytics এ বর্ণিত পদ্ধতিতে আপনার প্রকল্প এবং অ্যাপ সেট আপ করুন।
নিশ্চিত করুন যে আপনি আপনার Firebase প্রকল্পটি একটি Google Analytics অ্যাকাউন্টের সাথে লিঙ্ক করেছেন।
আপনার অ্যাপে Android SDK v17.6.0+ অথবা Apple প্ল্যাটফর্ম SDK v6.34.0+ অন্তর্ভুক্ত করেছেন কিনা তা নিশ্চিত করুন।
বাস্তবায়ন
AdMob , AppLovin, এবং ironSource এর মতো মনিটাইজেশন প্ল্যাটফর্মগুলিতে বিজ্ঞাপন প্রদর্শন থেকে উৎপন্ন বিজ্ঞাপনের আয় পরিমাপ করতে আপনি Google Analytics ব্যবহার করতে পারেন। বিজ্ঞাপনের আয় পরিমাপ করতে, যখনই আপনার ব্যবহারকারী আপনার অ্যাপে কোনও বিজ্ঞাপন দেখবেন তখন আপনাকে ad_impression ইভেন্টগুলি লগ করতে হবে। এই ইভেন্টগুলিতে বিজ্ঞাপন প্ল্যাটফর্ম, উৎস, মুদ্রা এবং মূল্যের মতো বিশদ বিবরণ থাকে।
AdMob
আপনি যদি AdMob প্ল্যাটফর্ম ব্যবহার করেন, তাহলে বিজ্ঞাপনের আয়ের স্বয়ংক্রিয় পরিমাপ সক্ষম করতে আপনার AdMob অ্যাপটিকে Firebase এবং Analytics সাথে লিঙ্ক করুন । আপনার ব্যবহারকারীরা যখনই কোনও বিজ্ঞাপনের ছাপ দেখেন তখনই Google Analytics জন্য Firebase SDK স্বয়ংক্রিয়ভাবে ad_impression ইভেন্টটি লগ করে।
অন্যান্য বিজ্ঞাপন নগদীকরণ প্ল্যাটফর্ম
AppLovin এবং ironSource এর মতো প্ল্যাটফর্মগুলি ইম্প্রেশন-স্তরের রাজস্ব ডেটা সরবরাহ করে যা আপনি Google Analytics ad_impression ইভেন্টগুলি লগ করতে ব্যবহার করতে পারেন।
নিম্নলিখিত বিভাগগুলিতে কয়েকটি ভিন্ন বিজ্ঞাপন মনিটাইজেশন প্ল্যাটফর্মের বাস্তবায়নের উদাহরণ দেখানো হয়েছে।
AppLovin সম্পর্কে
সুইফট
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, ]) } }
অবজেক্টিভ-সি
- (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); }
ঐক্য
// 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); }
লোহার উৎস
সুইফট
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, ]) }
অবজেক্টিভ-সি
- (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); } }
ঐক্য
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 একাধিক বৈশিষ্ট্য অফার করে।
ডিবাগভিউ
আপনার বাস্তবায়ন পরীক্ষা করার সময়, কনসোলে আপনার পরীক্ষারad_impressionডেটা দেখতে DebugView ব্যবহার করুন। যখন আপনি একটিad_impressionইভেন্ট নির্বাচন করেন, তখন আপনি প্যারামিটার প্যানেলে (স্ক্রিনের ডানদিকে) আপনার পাঠানো প্যারামিটারগুলি পর্যালোচনা করতে পারেন। এটি আপনাকে নিশ্চিত করতে সাহায্য করে যে সঠিক তথ্য প্রক্রিয়া করা হচ্ছে।রিয়েলটাইম
আপনার অ্যাপটি স্থাপন করার পরে, বাস্তবায়ন সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করতে Google Analytics রিয়েলটাইম রিপোর্ট ব্যবহার করুন। রিয়েলটাইম রিপোর্টে, ইভেন্টের নাম কার্ড অনুসারে ইভেন্ট গণনা দেখুন এবং শেষ 30 মিনিটের ইভেন্ট এবং প্যারামিটারের বিবরণ দেখতে ad_impression নির্বাচন করুন।BigQuery
এক বা একাধিক দিনেরad_impressionইভেন্টের নমুনা বের করতে BigQuery এক্সপোর্ট ব্যবহার করুন। শূন্য বা সেট না করা মানগুলির মতো সমস্যাগুলি খুঁজতে এই এক্সট্র্যাক্ট করা নমুনাটি ব্যবহার করুন এবং যেকোনো অপ্রয়োজনীয় ব্যবহারের ক্ষেত্রে আপনার কোডে সমাধান প্রয়োগ করুন।
পরবর্তী পদক্ষেপ
Firebase কনসোলে আপনার Analytics ড্যাশবোর্ডে অথবা Analytics কনসোলে আপনার লিঙ্ক করা Analytics প্রপার্টিতে যান। বিজ্ঞাপনের আয়কে ব্যবহারকারীর গড় আয় (ARPU) এবং লাইফটাইম ভ্যালু (LTV) এর মতো মেট্রিক্সে ফ্যাক্টর করা হয়।