रेवेन्यू के सोर्स को मेज़र करने से, आपको अपने उपयोगकर्ताओं की लाइफ़टाइम वैल्यू समझने और अपने ऐप्लिकेशन के कारोबार को बढ़ाने में मदद मिलती है. इस गाइड में, अपने प्लैटफ़ॉर्म के लिए विज्ञापन से होने वाली आय का आकलन करने का तरीका बताया गया है.
विज्ञापन से होने वाली आय का मेज़रमेंट सेट अप करने के बाद, इनमें से कोई भी काम किया जा सकता है:
उन उपयोगकर्ता कार्रवाइयों का विश्लेषण करें जिनसे आपके ऐप्लिकेशन से जनरेट होने वाले विज्ञापन से होने वाली आय में योगदान मिलता है.
Firebase A/B Testing का इस्तेमाल करके प्रयोग चलाएं और जानें कि आपके ऐप्लिकेशन में विज्ञापन से होने वाली आय में किन सुविधाओं से सुधार होता है. इसके अलावा, Remote Config उपयोगकर्ताओं के हिसाब से विज्ञापन दिखाने की सुविधा का इस्तेमाल करके, विज्ञापन अनुभव को उपयोगकर्ताओं के हिसाब से बनाएं.
विज्ञापन से मिलने वाले रेवेन्यू के लेवल के आधार पर, Firebase Remote Config का इस्तेमाल करके, उपयोगकर्ता ऑडियंस बनाएं और उपयोगकर्ता अनुभव को पसंद के मुताबिक बनाएं.
शुरू करने से पहले
अगर आपने अब तक ये काम नहीं किए हैं, तो इन्हें ज़रूर पूरा करें:
Analytics का इस्तेमाल शुरू करना में बताए गए तरीके से, अपना प्रोजेक्ट और ऐप्लिकेशन सेट अप करें.
पक्का करें कि आपने अपने Firebase प्रोजेक्ट को किसी Google Analytics खाते से लिंक किया हो.
पक्का करें कि आपने अपने ऐप्लिकेशन में Android SDK टूल का 17.6.0 या उसके बाद का वर्शन या Apple प्लैटफ़ॉर्म SDK टूल का 6.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 रीयल टाइम रिपोर्ट का इस्तेमाल करके पुष्टि करें कि लागू करने की प्रोसेस सही तरीके से काम कर रही है. रीयलटाइम रिपोर्ट में, इवेंट के नाम के हिसाब से इवेंट की संख्या कार्ड देखें. साथ ही, पिछले 30 मिनट के इवेंट और पैरामीटर की जानकारी देखने के लिए, ad_impression चुनें.BigQuery
ad_impression
इवेंट के एक या एक से ज़्यादा दिन का सैंपल निकालने के लिए, BigQuery एक्सपोर्ट का इस्तेमाल करें. निकाले गए इस सैंपल का इस्तेमाल करके, समस्याओं का पता लगाएं. जैसे, शून्य या सेट नहीं की गई वैल्यू. साथ ही, इस्तेमाल के ऐसे किसी भी उदाहरण के लिए अपने कोड में सुधार लागू करें जिसे ठीक नहीं किया गया है.
अगले चरण
Firebase कंसोल में अपने Analytics डैशबोर्ड पर जाएं या Analytics कंसोल में लिंक की गई अपनी Analytics प्रॉपर्टी पर जाएं. विज्ञापन से मिलने वाले रेवेन्यू को, हर उपयोगकर्ता से मिलने वाले औसत रेवेन्यू (एआरपीयू) और लाइफ़टाइम वैल्यू (एलटीवी) जैसी मेट्रिक में शामिल किया जाता है.