रेवेन्यू के सोर्स को मेज़र करने से, आपको अपने उपयोगकर्ताओं की लाइफ़टाइम वैल्यू समझने और ऐप्लिकेशन का रेवेन्यू बढ़ाने में मदद मिलती है. इस गाइड में, आपको अपने प्लैटफ़ॉर्म के लिए विज्ञापन से मिलने वाले रेवेन्यू को मेज़र करने की सुविधा सेट अप करने का तरीका बताया गया है.
विज्ञापन से मिलने वाले रेवेन्यू को मेज़र करने की सुविधा सेट अप करने के बाद, इनमें से कोई भी काम किया जा सकता है:
आपके ऐप्लिकेशन में उपयोगकर्ता की उन कार्रवाइयों का विश्लेषण करें जिनसे विज्ञापन से मिलने वाला रेवेन्यू जनरेट होता है.
Firebase A/B Testing का इस्तेमाल करके एक्सपेरिमेंट चलाएं. इससे आपको यह पता चलेगा कि किन सुविधाओं की वजह से, आपके ऐप्लिकेशन पर दिखने वाले विज्ञापनों से मिलने वाले रेवेन्यू में बढ़ोतरी हुई है. इसके अलावा, Remote Config सुविधा को उपयोगकर्ता की ज़रूरत के मुताबिक बनाने का विकल्प इस्तेमाल करके, उपयोगकर्ताओं को उनकी दिलचस्पी के मुताबिक विज्ञापन दिखाएं.
विज्ञापन से मिलने वाले रेवेन्यू के आधार पर, ऑडियंस के सेगमेंट बनाएं और उपयोगकर्ताओं के अनुभव को बेहतर करें Firebase Remote Config.
शुरू करने से पहले
अगर आपने अब तक ये काम नहीं किए हैं, तो इन्हें पूरा करें:
पक्का करें कि आपने अपने Firebase प्रोजेक्ट को linked your Firebase project to a Google Analytics खाते से लिंक किया हो.
पक्का करें कि आपने अपने ऐप्लिकेशन में, Android SDK का 17.6.0 या उसके बाद का वर्शन या Apple प्लैटफ़ॉर्म SDK का 6.34.0 या उसके बाद का वर्शन शामिल किया हो.
लागू करना
Google Analytics का इस्तेमाल करके, विज्ञापन से मिलने वाले रेवेन्यू को मेज़र किया जा सकता है. यह रेवेन्यू, AdMob AppLovin, और
ironSource जैसे प्लैटफ़ॉर्म पर विज्ञापन दिखाने से जनरेट होता है. विज्ञापन से मिलने वाले रेवेन्यू को मेज़र करने के लिए, आपको
ad_impression इवेंट
लॉग करने होंगे. ये इवेंट तब लॉग किए जाते हैं, जब आपका उपयोगकर्ता आपके ऐप्लिकेशन में कोई विज्ञापन देखता है. इन इवेंट में,
विज्ञापन प्लैटफ़ॉर्म, सोर्स, मुद्रा, और वैल्यू जैसी जानकारी शामिल होती है.
AdMob
अगर AdMob प्लैटफ़ॉर्म का इस्तेमाल किया जा रहा है,
तो अपने AdMob ऐप्लिकेशन को Firebase और Analytics
से लिंक करें. इससे, विज्ञापन से मिलने वाले रेवेन्यू को अपने-आप मेज़र किया जा सकेगा. Firebase SDK for
Google Analytics अपने-आप 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 पैरामीटर (इनके बारे में नीचे बताया गया है) दोनों शामिल किए हों. दोनों पैरामीटर सटीक होने चाहिए, ताकि उपयोगकर्ताओं को ज़्यादा या कम वैल्यू न दी जाए.
मुद्रा पैरामीटर
The currency parameter
(iOS+
| Android
| Unity)
को तीन अक्षरों वाले
ISO_4217
फ़ॉर्मैट में स्ट्रिंग के तौर पर भेजा जाना चाहिए. उदाहरण के लिए, "USD". विज्ञापन से कमाई करने वाले कुछ प्लैटफ़ॉर्म, मुद्रा की जानकारी नहीं देते,
ऐसे में, आपको पैरामीटर को हार्डकोड करना पड़ सकता है.
वैल्यू पैरामीटर
`value` पैरामीटर (iOS+ | Android | Unity) को दशमलव सेपरेटर के तौर पर डॉट का इस्तेमाल करके भेजा जाना चाहिए.value ऐसा हो सकता है कि आपको कुछ प्लैटफ़ॉर्म से मिली वैल्यू को, ऊपर बताए गए फ़ॉर्मैट में बदलना पड़े. कुछ प्लैटफ़ॉर्म, संख्या वाले फ़ॉर्मैट को स्थानीय भाषा में दिखाते हैं और दशमलव सेपरेटर के तौर पर कॉमा का इस्तेमाल करते हैं. कुछ मामलों में, ऐसा हो सकता है कि कोई प्लैटफ़ॉर्म वैल्यू न भेजे.
इसके अलावा, वैल्यू को संख्या वाले टाइप में होना चाहिए. जैसे, डबल या लॉन्ग.
उदाहरण के लिए, 1000.01, 0.001, और 1.00 सभी
मान्य हैं
सत्यापन
Google Analytics डेवलपमेंट साइकल के दौरान, लागू करने की प्रोसेस की पुष्टि करने के लिए कई सुविधाएं उपलब्ध कराता है.
DebugView
लागू करने की प्रोसेस को पहली बार टेस्ट करते समय, कंसोल में टेस्टad_impressionडेटा देखने के लिए, DebugView का इस्तेमाल करें.ad_impressionइवेंट चुनने पर, पैरामीटर पैनल (स्क्रीन के दाईं ओर) में, भेजे जा रहे पैरामीटर की समीक्षा की जा सकती है. इससे, यह पुष्टि करने में मदद मिलती है कि सही जानकारी प्रोसेस की जा रही है.रीयलटाइम
ऐप्लिकेशन को डिप्लॉय करने के बाद, Google Analytics रीयलटाइम रिपोर्ट का इस्तेमाल करके, पुष्टि करें कि लागू करने की प्रोसेस सही तरीके से काम कर रही है. रीयलटाइम रिपोर्ट में, इवेंट के नाम के हिसाब से इवेंट की संख्या कार्ड देखें और पिछले 30 मिनट के लिए इवेंट और पैरामीटर की जानकारी देखने के लिए, ad_impression चुनें.BigQuery
BigQuery एक्सपोर्ट का इस्तेमाल करके,ad_impressionइवेंट के एक या उससे ज़्यादा दिनों का सैंपल निकालें. निकाले गए इस सैंपल का इस्तेमाल करके, समस्याएं ढूंढें. जैसे, शून्य या सेट न की गई वैल्यू. साथ ही, ऐसे किसी भी इस्तेमाल के मामले के लिए अपने कोड में सुधार करें जिन्हें हैंडल नहीं किया गया है.
अगले चरण
Firebase कंसोल में अपने Analytics डैशबोर्ड पर जाएं या Analytics कंसोल में, लिंक की गई Analytics प्रॉपर्टी पर जाएं. विज्ञापन से मिलने वाले रेवेन्यू को, मेट्रिक में शामिल किया जाता है. जैसे, हर उपयोगकर्ता से मिला औसत रेवेन्यू (एआरपीयू) और लाइफ़टाइम वैल्यू (एलटीवी).