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