Catch up on highlights from Firebase at Google I/O 2023. Learn more

विज्ञापन राजस्व मापें

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

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

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

यदि आपने पहले से नहीं किया है, तो निम्नलिखित कार्यों को पूरा करना सुनिश्चित करें:

  1. एनालिटिक्स के साथ आरंभ करें में बताए अनुसार अपना प्रोजेक्ट और ऐप सेट अप करें।

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

  3. सुनिश्चित करें कि आपने अपने ऐप में Android SDK v17.6.0+ या Apple प्लेटफ़ॉर्म SDK 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 ईवेंट लॉग करने के लिए कर सकते हैं।

निम्नलिखित खंड कुछ अलग विज्ञापन मुद्रीकरण प्लेटफॉर्म के कार्यान्वयन के उदाहरण दिखाते हैं।

AppLovin

तीव्र

ध्यान दें: यह 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,
      ])
  }
}

उद्देश्य सी

ध्यान दें: यह 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);
}

एकता

// 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

तीव्र

ध्यान दें: यह 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,
    ])
}

उद्देश्य सी

ध्यान दें: यह 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);
    }
}

एकता

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. डिबग व्यू
    पहली बार अपने कार्यान्वयन का परीक्षण करते समय, कंसोल में अपना परीक्षण ad_impression डेटा देखने के लिए DebugView का उपयोग करें. जब आप कोई ad_impression ईवेंट चुनते हैं, तो आप पैरामीटर पैनल (स्क्रीन के दाईं ओर) में भेजे जा रहे पैरामीटर की समीक्षा कर सकते हैं. इससे आपको यह पुष्टि करने में मदद मिलती है कि सही जानकारी संसाधित की जा रही है।

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

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

अगले कदम

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