विज्ञापन से मिलने वाले रेवेन्यू का आकलन करना

रेवेन्यू के सोर्स को मेज़र करने से, आपको अपने उपयोगकर्ताओं की लाइफ़टाइम वैल्यू को समझने और अपने ऐप्लिकेशन के कारोबार को बढ़ाने में मदद मिलती है. इस गाइड में, अपने प्लैटफ़ॉर्म के लिए विज्ञापन से होने वाली आय का आकलन करने का तरीका बताया गया है.

विज्ञापन से होने वाली आय का मेज़रमेंट सेट अप करने के बाद, इनमें से कोई भी काम किया जा सकता है:

शुरू करने से पहले

अगर आपने अब तक ये काम नहीं किए हैं, तो इन्हें ज़रूर पूरा करें:

  1. Analytics का इस्तेमाल शुरू करना में बताए गए तरीके से, अपना प्रोजेक्ट और ऐप्लिकेशन सेट अप करें.

  2. पक्का करें कि आपने अपने Firebase प्रोजेक्ट को किसी Google Analytics खाते से लिंक किया हो.

  3. पक्का करें कि आपने अपने ऐप्लिकेशन में 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

ध्यान दें: Firebase का यह प्रॉडक्ट, macOS टारगेट पर उपलब्ध नहीं है.
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

ध्यान दें: Firebase का यह प्रॉडक्ट, macOS टारगेट पर उपलब्ध नहीं है.
- (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);
}

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

ध्यान दें: Firebase का यह प्रॉडक्ट, macOS टारगेट पर उपलब्ध नहीं है.
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

ध्यान दें: Firebase का यह प्रॉडक्ट, macOS टारगेट पर उपलब्ध नहीं है.
- (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);
    }
}

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, डेवलपमेंट साइकल के दौरान, लागू किए गए बदलावों की पुष्टि करने के लिए कई सुविधाएं देता है.

  1. DebugView
    एपीआई लागू करने की प्रोसेस की पहली बार जांच करते समय, कंसोल में अपना टेस्ट ad_impression डेटा देखने के लिए, DebugView का इस्तेमाल करें. ad_impression इवेंट चुनने पर, पैरामीटर पैनल (स्क्रीन की दाईं ओर) में भेजे जा रहे पैरामीटर की समीक्षा की जा सकती है. इससे आपको यह पुष्टि करने में मदद मिलती है कि सही जानकारी प्रोसेस की जा रही है.

  2. रीयलटाइम
    अपने ऐप्लिकेशन को डिप्लॉय करने के बाद, Google Analytics रीयलटाइम रिपोर्ट का इस्तेमाल करके पुष्टि करें कि लागू किया गया तरीका सही तरीके से काम कर रहा है. रीयलटाइम रिपोर्ट में, इवेंट के नाम के हिसाब से इवेंट की संख्या कार्ड देखें. साथ ही, पिछले 30 मिनट के इवेंट और पैरामीटर की जानकारी देखने के लिए, ad_impression चुनें.

  3. BigQuery
    ad_impression इवेंट के एक या एक से ज़्यादा दिन का सैंपल निकालने के लिए, BigQuery एक्सपोर्ट का इस्तेमाल करें. निकाले गए इस सैंपल का इस्तेमाल करके, समस्याओं का पता लगाएं. जैसे, शून्य या सेट नहीं की गई वैल्यू. साथ ही, इस्तेमाल के ऐसे किसी भी उदाहरण के लिए अपने कोड में सुधार लागू करें जिसे ठीक नहीं किया गया है.

अगले चरण

Firebase कंसोल में अपने Analytics डैशबोर्ड पर जाएं या Analytics कंसोल में लिंक की गई Analytics प्रॉपर्टी पर जाएं. विज्ञापन से मिलने वाले रेवेन्यू को, हर उपयोगकर्ता से मिलने वाले औसत रेवेन्यू (एआरपीयू) और लाइफ़टाइम वैल्यू (एलटीवी) जैसी मेट्रिक में शामिल किया जाता है.