הכנסות מפרסום ברמת החשיפה

כשמתרחשת חשיפה, Google Mobile Ads SDK מספק נתוני הכנסות מפרסום שמשויכים לחשיפה הזו. אתם יכולים להשתמש בנתונים כדי לחשב את הערך של משתמש לאורך חייו, או להעביר את הנתונים במורד הזרם למערכות רלוונטיות אחרות.

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

דרישות מוקדמות

  • מייבאים את Google Mobile Ads SDK בגרסה 21.1.0 ואילך.

לכל פורמט מודעה יש OnPaidEventListener. במהלך מחזור החיים של אירוע שקשור למודעה, Google Mobile Ads SDK עוקב אחרי אירועי חשיפה ומפעיל את ה-handler עם ערך שנצבר.

בדוגמה הבאה מוצג טיפול באירועים בתשלום במודעה מתגמלת:

Java

private void setOnPaidEventListener(RewardedAd ad) {
  ad.setOnPaidEventListener(
      new OnPaidEventListener() {
        @Override
        public void onPaidEvent(@NonNull AdValue adValue) {
          // Extract the impression-level ad revenue data.
          long valueMicros = adValue.getValueMicros();
          String currencyCode = adValue.getCurrencyCode();
          int precision = adValue.getPrecisionType();

          // Get the ad unit ID.
          String adUnitId = ad.getAdUnitId();

          // Extract ad response information.
          AdapterResponseInfo loadedAdapterResponseInfo =
              ad.getResponseInfo().getLoadedAdapterResponseInfo();
          if (loadedAdapterResponseInfo != null) {
            String adSourceName = loadedAdapterResponseInfo.getAdSourceName();
            String adSourceId = loadedAdapterResponseInfo.getAdSourceId();
            String adSourceInstanceName = loadedAdapterResponseInfo.getAdSourceInstanceName();
            String adSourceInstanceId = loadedAdapterResponseInfo.getAdSourceInstanceId();

            Bundle extras = ad.getResponseInfo().getResponseExtras();
            String mediationGroupName = extras.getString("mediation_group_name");
            String mediationABTestName = extras.getString("mediation_ab_test_name");
            String mediationABTestVariant = extras.getString("mediation_ab_test_variant");
          }
        }
      });
}

Kotlin

private fun setOnPaidEventListener(ad: RewardedAd) {
  ad.onPaidEventListener = OnPaidEventListener { adValue ->
    // Extract the impression-level ad revenue data.
    val valueMicros = adValue.valueMicros
    val currencyCode = adValue.currencyCode
    val precision = adValue.precisionType

    // Get the ad unit ID.
    val adUnitId = ad.adUnitId

    // Extract ad response information.
    val loadedAdapterResponseInfo = ad.responseInfo.loadedAdapterResponseInfo
    val adSourceName = loadedAdapterResponseInfo?.adSourceName
    val adSourceId = loadedAdapterResponseInfo?.adSourceId
    val adSourceInstanceName = loadedAdapterResponseInfo?.adSourceInstanceName
    val adSourceInstanceId = loadedAdapterResponseInfo?.adSourceInstanceId
    val extras = ad.responseInfo.responseExtras
    val mediationGroupName = extras.getString("mediation_group_name")
    val mediationABTestName = extras.getString("mediation_ab_test_name")
    val mediationABTestVariant = extras.getString("mediation_ab_test_variant")
  }
}

זיהוי שם של מקור מודעות של אירוע בהתאמה אישית

במקורות מודעות של אירועים מותאמים אישית, השיטה getAdSourceName() מחזירה את שם מקור המודעות Custom event. אם אתם משתמשים בכמה אירועים מותאמים אישית, שם מקור המודעות לא מספיק מפורט כדי להבחין בין כמה אירועים מותאמים אישית. כדי לאתר אירוע ספציפי בהתאמה אישית, מבצעים את הפעולות הבאות:

  1. מבצעים קריאה ל-method‏ getAdSourceName().
  2. מגדירים שם ייחודי למקור המודעות.

בדוגמה הבאה מוגדר שם ייחודי של מקור מודעות לאירוע מותאם אישית:

Java

private String getUniqueAdSourceName(@NonNull AdapterResponseInfo loadedAdapterResponseInfo) {

  String adSourceName = loadedAdapterResponseInfo.getAdSourceName();
  if (adSourceName.equals("Custom Event")) {
    if (loadedAdapterResponseInfo
        .getAdapterClassName()
        .equals("com.google.ads.mediation.sample.customevent.SampleCustomEvent")) {
      adSourceName = "Sample Ad Network (Custom Event)";
    }
  }
  return adSourceName;
}

Kotlin

private fun getUniqueAdSourceName(loadedAdapterResponseInfo: AdapterResponseInfo): String {

  var adSourceName = loadedAdapterResponseInfo.adSourceName
  if (adSourceName == "Custom Event") {
    if (
      loadedAdapterResponseInfo.adapterClassName ==
        "com.google.ads.mediation.sample.customevent.SampleCustomEvent"
    ) {
      adSourceName = "Sample Ad Network (Custom Event)"
    }
  }
  return adSourceName
}

מידע נוסף על מקור המודעה המנצח זמין במאמר אחזור מידע על תגובת המודעה.

שיטות מומלצות להטמעה

  • צריך להגדיר את מאזין האירועים מיד אחרי שיוצרים את אובייקט המודעה או מקבלים אליו גישה, ובכל מקרה לפני הצגת המודעה. כך לא תפספסו אף קריאה חוזרת (callback) של אירוע בתשלום.
  • שליחת פרטי ההכנסות מפרסום ברמת החשיפה לשרת הניתוח המועדף באופן מיידי בזמן הקריאה להחזרת קריאה של אירוע בתשלום. כך תוכלו לוודא שלא תפספסו בטעות קריאות חוזרות (callback) ולא יהיו אי-התאמות בנתונים.

AdValue

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

PrecisionType תיאור
UNKNOWN ערך לא מוכר של מודעה. הערך הזה מוחזר כשהפינגבק של ערך חיי הלקוח מופעל, אבל אין מספיק נתונים זמינים.
ESTIMATED הערך המשוער של המודעה על סמך נתונים נצברים.
PUBLISHER_PROVIDED בעל האפליקציה סיפק את ערך המודעה, למשל: עלות בהזנה ידנית לאלף חשיפות בקבוצה לבחירת רשת (Mediation).
PRECISE הערך המדויק ששולם על המודעה.
במקרה של תהליך בחירת הרשת, מערכת Ad Manager מנסה לספק ערך ESTIMATED למקורות תנועה של מודעות שמופעל בהם איסוף נתונים אוטומטי. במקורות מודעות שלא עברו אופטימיזציה, או במקרים שבהם אין מספיק נתונים מצטברים כדי לדווח על הערכה משמעותית, מוחזר הערך PUBLISHER_PROVIDED.

בדיקת חשיפות ממכירה פומבית פתוחה

אחרי שמתרחש אירוע של הכנסות מפרסום ברמת החשיפה במקור מודעות מסוג Open Bidding דרך בקשת בדיקה, תקבלו רק את הערכים הבאים:

  • UNKNOWN: מציין את סוג הדיוק.
  • 0: מציין את ערך המודעה.

בעבר, יכול להיות שסוג הדיוק היה מוצג כערך אחר מלבד UNKNOWN וערך המודעה היה גבוה מ-0.

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