Доход от рекламы на уровне показов

Когда происходит показ, Google Mobile Ads SDK предоставляет данные о доходе от рекламы, связанном с этим показом. Вы можете использовать данные для расчета жизненной ценности пользователя или пересылать данные в другие соответствующие системы.

Это руководство призвано помочь вам внедрить сбор данных о доходах от рекламы на уровне показов в вашем приложении Android.

Предварительные условия

  • Импортируйте Google Mobile Ads SDK 21.1.0 или более поздней версии.

Каждый формат объявления имеет OnPaidEventListener . В течение жизненного цикла рекламного события Google Mobile Ads SDK отслеживает события показа и вызывает обработчик с полученным значением.

В следующем примере обрабатываются платные события для объявления с вознаграждением:

Котлин

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?) {
    val adRequest = 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")
          }
        }
    })
  }
}

Ява

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

Дополнительную информацию о победившем источнике объявления см. в разделе Получение информации об ответе на объявление .

Интеграция с партнерами по атрибуции приложений (AAP)

Полную информацию о пересылке данных о доходах от рекламы на аналитические платформы можно найти в руководстве партнера:

Партнерский SDK
Регулировать
ПриложенияФлаер
Единственное число
Тенджин

Лучшие практики внедрения

  • Установите прослушиватель сразу после создания объекта рекламы или получения доступа к нему, и обязательно перед показом рекламы. Это гарантирует, что вы не пропустите ни одного платного обратного вызова событий.
  • Отправьте информацию о доходах от рекламы на уровне показов на предпочитаемый вами аналитический сервер сразу же во время вызова обратного вызова платного события. Это гарантирует, что вы случайно не отбросите обратные вызовы и избежите расхождений в данных.

Стоимость объявления

AdValue – это класс, который представляет денежную стоимость, полученную за рекламу, включая код валюты значения и его тип точности, закодированный, как показано ниже.

Тип точности Описание
UNKNOWN Ценность объявления неизвестна. Он возвращается, когда пингбэк LTV включен, но доступных данных недостаточно.
ESTIMATED Ценность объявления, рассчитанная на основе агрегированных данных.
PUBLISHER_PROVIDED Издатель предоставил ценность объявления, например вручную установил цену за тысячу показов в группе медиации.
PRECISE Точная стоимость, уплаченная за это объявление.

В случае с посредничеством AdMob AdMob пытается предоставить ESTIMATED ценность для оптимизированных источников объявлений.

Для неоптимизированных источников объявлений или в случаях, когда агрегированных данных недостаточно для получения значимой оценки, возвращается значение PUBLISHER_PROVIDED .

Тестовые показы из источников объявлений с назначением ставок

После того как событие дохода от рекламы на уровне показа происходит для источника объявлений с назначением ставок посредством тестового запроса, вы получаете только следующие значения:

  • UNKNOWN : указывает тип точности.
  • 0 : указывает ценность объявления.

Раньше вы могли видеть тип точности как значение, отличное от UNKNOWN , и значение объявления, превышающее 0 .

Подробную информацию об отправке запроса тестового объявления см. в разделе Включение тестовых устройств .

,

Когда происходит показ, Google Mobile Ads SDK предоставляет данные о доходах от рекламы, связанные с этим показом. Вы можете использовать эти данные для расчета жизненной ценности пользователя или передать данные в другие соответствующие системы.

Это руководство призвано помочь вам внедрить сбор данных о доходах от рекламы на уровне показов в вашем приложении Android.

Предварительные условия

  • Импортируйте Google Mobile Ads SDK 21.1.0 или более поздней версии.

Каждый формат объявления имеет OnPaidEventListener . В течение жизненного цикла рекламного события Google Mobile Ads SDK отслеживает события показа и вызывает обработчик с полученным значением.

В следующем примере обрабатываются платные события для объявления с вознаграждением:

Котлин

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?) {
    val adRequest = 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")
          }
        }
    })
  }
}

Ява

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

Дополнительную информацию о победившем источнике объявления см. в разделе Получение информации об ответе на объявление .

Интеграция с партнерами по атрибуции приложений (AAP)

Полную информацию о пересылке данных о доходах от рекламы на аналитические платформы можно найти в руководстве партнера:

Партнерский SDK
Регулировать
ПриложенияФлаер
Единственное число
Тенджин

Лучшие практики внедрения

  • Установите прослушиватель сразу после создания объекта рекламы или получения доступа к нему, и обязательно перед показом рекламы. Это гарантирует, что вы не пропустите ни одного платного обратного вызова событий.
  • Отправьте информацию о доходах от рекламы на уровне показов на предпочитаемый вами аналитический сервер сразу же во время вызова обратного вызова платного события. Это гарантирует, что вы случайно не отбросите обратные вызовы и избежите расхождений в данных.

Стоимость объявления

AdValue – это класс, который представляет денежную стоимость, полученную за рекламу, включая код валюты значения и его тип точности, закодированный, как показано ниже.

Тип точности Описание
UNKNOWN Ценность объявления неизвестна. Он возвращается, когда pingback LTV включен, но доступных данных недостаточно.
ESTIMATED Ценность объявления, рассчитанная на основе агрегированных данных.
PUBLISHER_PROVIDED Издатель указал ценность объявления, например вручную установил цену за тысячу показов в группе медиации.
PRECISE Точная стоимость, уплаченная за это объявление.

В случае с посредничеством AdMob AdMob пытается предоставить ESTIMATED ценность для оптимизированных источников объявлений .

Для неоптимизированных источников объявлений или в случаях, когда агрегированных данных недостаточно для получения значимой оценки, возвращается значение PUBLISHER_PROVIDED .

Тестовые показы из источников объявлений с назначением ставок

После того как событие дохода от рекламы на уровне показа происходит для источника объявлений с назначением ставок посредством тестового запроса, вы получаете только следующие значения:

  • UNKNOWN : указывает тип точности.
  • 0 : указывает ценность объявления.

Раньше вы могли видеть тип точности как значение, отличное от UNKNOWN , и значение объявления, превышающее 0 .

Подробную информацию об отправке запроса тестового объявления см. в разделе Включение тестовых устройств .