מדידת הכנסות ממודעות

מדידת מקורות ההכנסה שלך עוזרת לך להבין את ערך החיים של המשתמשים שלך ולהגדיל את עסקי האפליקציות שלך. מדריך זה מראה לך כיצד להגדיר מדידת הכנסות ממודעות עבור הפלטפורמה שלך.

לאחר שתגדיר מדידת הכנסות ממודעות, תוכל לבצע כל אחת מהפעולות הבאות:

לפני שאתה מתחיל

אם עדיין לא עשית זאת, הקפד להשלים את המשימות הבאות:

  1. הגדר את הפרויקט והאפליקציה שלך כמתואר ב'התחלה עם Analytics' .

  2. ודא שקישרת את פרויקט Firebase שלך ​​לחשבון Google Analytics.

  3. ודא שכללת באפליקציה שלך את Android SDK v17.6.0+ או את Apple platforms SDK v6.34.0+.

יישום

אתה יכול להשתמש ב-Google Analytics כדי למדוד הכנסות ממודעות שנוצרו מהצגת מודעות עם פלטפורמות מונטיזציה, כגון AdMob, AppLovin ו-ironSource. כדי למדוד הכנסות ממודעות, עליך לרשום אירועי ad_impression בכל פעם שהמשתמש שלך רואה פרסומת באפליקציה שלך. אירועים אלה מכילים פרטים כגון פלטפורמת המודעות, המקור, המטבע והערך.

AdMob

אם אתה משתמש בפלטפורמת AdMob, קשר את אפליקציית AdMob שלך ל-Firebase ול-Analytics כדי לאפשר מדידה אוטומטית של הכנסות ממודעות. Firebase SDK עבור Google Analytics רושם אוטומטית את אירוע ad_impression בכל פעם שהמשתמשים שלך רואים הופעת מודעה.

פלטפורמות אחרות למונטיזציה של מודעות

פלטפורמות כגון AppLovin ו-ironSource מספקות נתוני הכנסה ברמת ההופעה שבהן תוכל להשתמש כדי לרשום אירועי ad_impression של Google Analytics.

הסעיפים הבאים מציגים דוגמאות ליישום עבור כמה פלטפורמות שונות של מונטיזציה של מודעות.

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,
      ])
  }
}

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);
}

אַחְדוּת

// 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,
    ])
}

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);
    }
}

אַחְדוּת

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
    בעת בדיקת היישום לראשונה, השתמש ב-DebugView כדי לראות את נתוני הבדיקה ad_impression במסוף. כאשר אתה בוחר אירוע ad_impression , אתה יכול לסקור את הפרמטרים שאתה שולח בחלונית Parameters (בצד ימין של המסך). זה עוזר לך לאשר שהמידע הנכון מעובד.

  2. זמן אמת
    לאחר פריסת האפליקציה שלך, השתמש בדוח זמן אמת של Google Analytics כדי לוודא שהיישום פועל כהלכה. בדוח זמן אמת, הצג את ספירת האירועים לפי כרטיס שם האירוע ובחר ad_impression כדי לראות את פרטי האירוע והפרמטרים של 30 הדקות האחרונות.

  3. BigQuery
    השתמש ב-BigQuery Export כדי לחלץ דוגמה של יום אחד או יותר של אירועי ad_impression . השתמש בדוגמה שחולצה זו כדי לחפש בעיות, כגון אפס או ערכים לא מוגדרים, והחל תיקונים על הקוד שלך עבור כל מקרי שימוש שלא טופלו.

הצעדים הבאים

בקר במרכז השליטה של ​​Analytics במסוף Firebase או בנכס Analytics המקושר שלך במסוף Analytics. הכנסות ממודעות נכללות במדדים, כגון הכנסה ממוצעת למשתמש (ARPU) וערך חיים (LTV).