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

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

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

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

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

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

Java

import com.google.android.gms.ads.rewarded.RewardedAd;

public class MainActivity extends Activity {
  private RewardedAd rewardedAd;
  private final String TAG = "MainActivity";

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    AdRequest adRequest = new AdRequest.Builder().build();

    RewardedAd.load(this, "AD_UNIT_ID",
      adRequest, new RewardedAdLoadCallback(){
        @Override
        public void onAdLoaded(@NonNull RewardedAd ad) {
          rewardedAd = ad;
          // Set paid event listener
          rewardedAd.setOnPaidEventListener(new OnPaidEventListener() {
            @Override
            public void onPaidEvent(AdValue adValue) {
              // TODO: Send the impression-level ad revenue information to your
              //preferred analytics server directly within this callback.

              // 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 = rewardedAd.getAdUnitId();
              
              AdapterResponseInfo loadedAdapterResponseInfo = rewardedAd.getResponseInfo().
                  getLoadedAdapterResponseInfo();
              String adSourceName = loadedAdapterResponseInfo.getAdSourceName();
              String adSourceId = loadedAdapterResponseInfo.getAdSourceId();
              String adSourceInstanceName = loadedAdapterResponseInfo.getAdSourceInstanceName();
              String adSourceInstanceId = loadedAdapterResponseInfo.getAdSourceInstanceId();

              Bundle extras = rewardedAd.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

import com.google.android.gms.ads.rewarded.RewardedAd

class MainActivity : AppCompatActivity() {
  private var rewardedAd: RewardedAd? = null
  private final var TAG = "MainActivity"

  override fun onCreate(savedInstanceState: Bundle?) {
    AdRequest adRequest = new AdRequest.Builder().build()

    RewardedAd.load(this, "AD_UNIT_ID",
      adRequest, object: RewardedAdLoadCallback() {
        override fun onAdLoaded(ad: RewardedAd) {
          rewardedAd = ad
          // Set paid event listener
          rewardedAd.onPaidEventListener = OnPaidEventListener { adValue ->
            // TODO: Send the impression-level ad revenue information to your preferred
            // analytics server directly within this callback.

            // 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 = rewardedAd.adUnitId

            val loadedAdapterResponseInfo = rewardedAd.responseInfo.loadedAdapterResponse
            val adSourceName = loadedAdapterResponseInfo.adSourceName
            val adSourceId = loadedAdapterResponseInfo.adSourceId
            val adSourceInstanceName = loadedAdapterResponseInfo.adSourceInstanceName
            val adSourceInstanceId = loadedAdapterResponseInfo.adSourceInstanceId
            val extras = rewardedAd.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")
          }
        }
    })
  }
}

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

שילוב של שותפי דוחות שיוך לקמפיינים של אפליקציה (AAP)

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

SDK של שותף
Adjust
AppsFlyer
Singular
Tenjin

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

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

AdValue

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

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

במקרה של תהליך בחירת הרשת (Mediation), AdMob מנסה לספק ערך ESTIMATED למקורות של מודעות שעברו אופטימיזציה של. ב- כשמדובר במקורות של מודעות שלא עברו אופטימיזציה, או במקרים שבהם אין מספיק נתונים נצברים כדי לדווח על הערכה משמעותית, הערך PUBLISHER_PROVIDED מוחזר.