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

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

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

Требования

Как реализовать обработчик платных событий

У каждого формата объявлений есть событие OnAdPaid. В течение жизненного цикла события объявления Google Mobile Ads Unity Plugin отслеживает события показа и вызывает обработчик с AdValue, представляющим полученную ценность.

В примере ниже показано, как обрабатывать события оплаты для объявления с вознаграждением.

private void LoadRewardedAd()
{
   // Send the request to load the ad.
   AdRequest adRequest = new AdRequest();
   RewardedAd.Load("AD_UNIT_ID", adRequest, (RewardedAd rewardedAd, LoadAdError error) =>
   {
      // If the operation failed with a reason.
      if (error != null)
      {
         Debug.LogError("Rewarded ad failed to load an ad with error : " + error);
         return;
      }

      rewardedAd.OnAdPaid += this.HandleAdPaidEvent;
   });
}

public void HandleAdPaidEvent(AdValue adValue)
{
    // TODO: Send the impression-level ad revenue information to your
    // preferred analytics server directly within this callback.

    long valueMicros = adValue.Value;
    string currencyCode = adValue.CurrencyCode;
    PrecisionType precision = adValue.Precision;

    ResponseInfo responseInfo = rewardedAd.GetResponseInfo();
    string responseId = responseInfo.GetResponseId();

    AdapterResponseInfo loadedAdapterResponseInfo = responseInfo.GetLoadedAdapterResponseInfo();
    string adSourceId = loadedAdapterResponseInfo.AdSourceId;
    string adSourceInstanceId = loadedAdapterResponseInfo.AdSourceInstanceId;
    string adSourceInstanceName = loadedAdapterResponseInfo.AdSourceInstanceName;
    string adSourceName = loadedAdapterResponseInfo.AdSourceName;
    string adapterClassName = loadedAdapterResponseInfo.AdapterClassName;
    long latencyMillis = loadedAdapterResponseInfo.LatencyMillis;
    Dictionary<string, string> credentials = loadedAdapterResponseInfo.AdUnitMapping;

    Dictionary<string, string> extras = responseInfo.GetResponseExtras();
    string mediationGroupName = extras["mediation_group_name"];
    string mediationABTestName = extras["mediation_ab_test_name"];
    string mediationABTestVariant = extras["mediation_ab_test_variant"];
}

Как определить название источника объявлений для специального события

Для источников объявлений со специальными событиями свойство AdSourceName возвращает название источника объявлений Custom Event. Если вы используете несколько специальных событий, название источника объявлений не позволяет различать их. Чтобы найти определенное специальное событие, выполните следующие действия:

  1. Получите свойство AdapterClassName.
  2. Укажите уникальное название источника объявлений.

В примере ниже задается уникальное название источника объявлений для специального события:

private string GetAdSourceName(AdapterResponseInfo loadedAdapterResponseInfo)
{
    if (loadedAdapterResponseInfo == null)
    {
        return string.Empty;
    }

    string adSourceName = loadedAdapterResponseInfo.AdSourceName;

    if (adSourceName == "Custom Event")
    {

        #if UNITY_ANDROID
            if (loadedAdapterResponseInfo.AdapterClassName ==
                "com.google.ads.mediation.sample.customevent.SampleCustomEvent")
            {
                adSourceName = "Sample Ad Network (Custom Event)";
            }
        #elif UNITY_IPHONE
            if (loadedAdapterResponseInfo.AdapterClassName == "SampleCustomEvent")
            {
                adSourceName = "Sample Ad Network (Custom Event)";
            }
        #endif

    }
    return adSourceName;
}

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

Интеграция с партнерами по атрибуции конверсий в приложениях

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

SDK партнера
Adjust
AppsFlyer
Singular
Tenjin

Рекомендации по реализации

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

AdValue

AdValue – это класс, который представляет денежную ценность, полученную за показ объявления, включая код валюты и тип точности, закодированный следующим образом:

AdValue.PrecisionType Описание
Unknown Неизвестное значение объявления. Возвращается, когда включена передача данных о пожизненной ценности, но доступно недостаточно данных.
Estimated Доход от объявления рассчитывается на основе агрегированных данных.
PublisherProvided Стоимость объявления, указанная издателем, например цена за тысячу показов, назначенная вручную в группе медиации.
Precise Точная стоимость этого объявления.

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

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

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

  • Unknown – указывает тип точности.
  • 0 – элемент, указывающий ценность объявления;
Ранее тип точности мог быть представлен значением, отличным от Unknown, а значение объявления – числом, большим 0.

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