আপনার আয়ের উৎসগুলো পরিমাপ করা আপনাকে আপনার ব্যবহারকারীদের আজীবন মূল্য বুঝতে এবং আপনার অ্যাপ ব্যবসাকে এগিয়ে নিতে সাহায্য করে। এই নির্দেশিকাটি আপনাকে দেখাবে কীভাবে আপনার প্ল্যাটফর্মের জন্য বিজ্ঞাপন থেকে আয়ের পরিমাপ ব্যবস্থা স্থাপন করতে হয়।
বিজ্ঞাপন থেকে আয়ের পরিমাপ ব্যবস্থা সেট আপ করার পরে, আপনি নিম্নলিখিত কাজগুলোর যেকোনো একটি করতে পারেন:
আপনার অ্যাপের বিজ্ঞাপন থেকে আয়ে অবদান রাখে এমন ব্যবহারকারীর কার্যকলাপ বিশ্লেষণ করুন।
আপনার অ্যাপের বিজ্ঞাপনের আয় বাড়াতে কোন ফিচারগুলো সাহায্য করে তা খুঁজে বের করতে Firebase A/B Testing ব্যবহার করে পরীক্ষা চালান, অথবা Remote Config পার্সোনালাইজেশন ব্যবহার করে বিজ্ঞাপনের অভিজ্ঞতা নিজের মতো করে সাজিয়ে নিন।
বিজ্ঞাপনের আয়ের স্তরের ওপর ভিত্তি করে Firebase Remote Config ব্যবহার করে ব্যবহারকারী গোষ্ঠী তৈরি করুন এবং ব্যবহারকারীর অভিজ্ঞতা সাজিয়ে তুলুন ।
শুরু করার আগে
যদি এখনও না করে থাকেন, তাহলে নিম্নলিখিত কাজগুলো অবশ্যই সম্পন্ন করুন:
Analytics দিয়ে শুরু করুন- এ বর্ণিত পদ্ধতি অনুযায়ী আপনার প্রজেক্ট ও অ্যাপ সেট আপ করুন।
আপনার অ্যাপে অ্যান্ড্রয়েড এসডিকে v17.6.0+ অথবা অ্যাপল প্ল্যাটফর্মের এসডিকে 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 ইভেন্টগুলো লগ করতে ব্যবহার করতে পারেন।
নিম্নলিখিত বিভাগগুলিতে কয়েকটি ভিন্ন বিজ্ঞাপন থেকে অর্থ উপার্জনের প্ল্যাটফর্মের বাস্তবায়নের উদাহরণ দেখানো হয়েছে।
অ্যাপলভিন
সুইফট
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ইভেন্ট নির্বাচন করবেন, তখন আপনি Parameters প্যানেলে (স্ক্রিনের ডানদিকে) আপনার পাঠানো প্যারামিটারগুলো পর্যালোচনা করতে পারবেন। এটি আপনাকে নিশ্চিত করতে সাহায্য করে যে সঠিক তথ্যই প্রসেস করা হচ্ছে।রিয়েলটাইম
আপনার অ্যাপটি ডেপ্লয় করার পর, ইমপ্লিমেন্টেশনটি সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করতে Google Analytics রিয়েলটাইম রিপোর্ট ব্যবহার করুন। রিয়েলটাইম রিপোর্টে, ' Event count by Event name' কার্ডটি দেখুন এবং গত ৩০ মিনিটের ইভেন্ট ও প্যারামিটারের বিস্তারিত দেখতে 'ad_impression' নির্বাচন করুন।BigQuery
BigQuery এক্সপোর্ট ব্যবহার করে এক বা একাধিক দিনেরad_impressionইভেন্টের একটি নমুনা সংগ্রহ করুন। এই সংগৃহীত নমুনাটি ব্যবহার করে শূন্য বা সেট না করা মানের মতো সমস্যাগুলো খুঁজুন এবং যেকোনো অনিয়ন্ত্রিত ব্যবহারের ক্ষেত্রে আপনার কোডে সমাধান প্রয়োগ করুন।
পরবর্তী পদক্ষেপ
Firebase কনসোলে আপনার Analytics ড্যাশবোর্ডে অথবা Analytics কনসোলে আপনার লিঙ্ক করা Analytics প্রপার্টিতে যান। বিজ্ঞাপনের আয় Average Revenue Per User (ARPU) এবং Lifetime Value (LTV)-এর মতো মেট্রিকগুলিতে অন্তর্ভুক্ত করা হয়।