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

Выберите платформу: Android iOS Unity

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

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

Предпосылки

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

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

Быстрый

class ViewController: UIViewController, FullScreenContentDelegate {
  var rewardedAd: RewardedAd?
  func requestRewardedAd() {
    RewardedAd.load(
      with: "AD_UNIT_ID", request: Request()
    ) { (ad, error) in
      if let error = error {
        print("Rewarded ad failed to load with error: \(error.localizedDescription)")
        return
      }
      if let ad = ad {
        self.rewardedAd = ad
        self.rewardedAd?.paidEventHandler = { adValue in
          // TODO: Send the impression-level ad revenue information to your preferred analytics
          // server directly within this callback.

          // Extract the impression-level ad revenue data.
          let value = adValue.value
          let precision = adValue.precision
          let currencyCode = adValue.currencyCode

          // Get the ad unit ID.
          let adUnitId = ad.adUnitID

          let responseInfo = ad.responseInfo
          let loadedAdNetworkResponseInfo = responseInfo?.loadedAdNetworkResponseInfo
          let adSourceId = loadedAdNetworkResponseInfo?.adSourceID
          let adSourceInstanceId = loadedAdNetworkResponseInfo?.adSourceInstanceID
          let adSourceInstanceName = loadedAdNetworkResponseInfo?.adSourceInstanceName
          let adSourceName = loadedAdNetworkResponseInfo?.adSourceName
          let mediationGroupName = responseInfo?.extras["mediation_group_name"]
          let mediationABTestName = responseInfo?.extras["mediation_ab_test_name"]
          let mediationABTestVariant = responseInfo?.extras["mediation_ab_test_variant"]
        }
      }
    }
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()
@property(nonatomic, strong) GADRewardedAd *rewardedAd;
@end

@implementation ViewController
- (void)requestRewardedAd {
  __weak ViewController *weakSelf = self;

  GADRequest *request = [GADRequest request];
  [GADRewardedAd
   loadWithAdUnitID:@"AD_UNIT_ID"
   request:request
   completionHandler:^(GADRewardedAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
      return;
    }
    self.rewardedAd = ad;
    self.rewardedAd.paidEventHandler = ^void(GADAdValue *_Nonnull value){
      ViewController *strongSelf = weakSelf;
      // TODO: Send the impression-level ad revenue information to your preferred analytics
      // server directly within this callback.

      // Extract the impression-level ad revenue data.
      NSDecimalNumber *value; = value.value;
      NSString *currencyCode = value.currencyCode;
      GADAdValuePrecision precision = value.precision;

      // Get the ad unit ID.
      NSString *adUnitId = strongSelf.rewardedAd.adUnitID;

      GADAdNetworkResponseInfo *loadedAdNetworkResponseInfo =
          strongSelf.rewardedAd.responseInfo.loadedAdNetworkResponseInfo;
      NSString *adSourceName = loadedAdNetworkResponseInfo.adSourceName;
      NSString *adSourceID = loadedAdNetworkResponseInfo.adSourceID;
      NSString *adSourceInstanceName = loadedAdNetworkResponseInfo.adSourceInstanceName;
      NSString *adSourceInstanceID = loadedAdNetworkResponseInfo.adSourceInstanceID;
      NSDictionary<NSString *, id> *extras = strongSelf.rewardedAd.responseInfo.extrasDictionary;
      NSString *mediationGroupName = extras["mediation_group_name"];
      NSString *mediationABTestName = extras["mediation_ab_test_name"];
      NSString *mediationABTestVariant = extras["mediation_ab_test_variant"];
    };
  ]};
}

Определите название источника рекламы для пользовательского события

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

  1. Получите свойство adNetworkClassName .
  2. Задайте уникальное название источника рекламы.

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

Быстрый

func uniqueAdSourceName(for loadedAdNetworkResponseInfo: AdNetworkResponseInfo) -> String {
  var adSourceName: String = loadedAdNetworkResponseInfo.adSourceName ?? ""
  if adSourceName == "Custom Event" {
    if loadedAdNetworkResponseInfo.adNetworkClassName
      == "MediationExample.SampleCustomEventSwift"
    {
      adSourceName = "Sample Ad Network (Custom Event)"
    }
  }
  return adSourceName
}

Objective-C

- (NSString *)uniqueAdSourceNameForAdNetworkResponseInfo:
    (GADAdNetworkResponseInfo *)loadedAdNetworkResponseInfo {
  NSString *adSourceName = loadedAdNetworkResponseInfo.adSourceName;
  if ([adSourceName isEqualToString:@"Custom Event"]) {
    if ([loadedAdNetworkResponseInfo.adNetworkClassName isEqualToString:@"SampleCustomEvent"]) {
      adSourceName = @"Sample Ad Network (Custom Event)";
    }
  }
  return adSourceName;
}

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

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

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

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

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

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

GADAdValue

GADAdValue — это класс, представляющий денежную стоимость, полученную за рекламу, включая код валюты стоимости и ее тип точности, закодированный следующим образом.

GADAdValuePrecision Описание
GADAdValuePrecisionUnknown Неизвестная ценность объявления. Возвращается, если включена функция pingback LTV, но недостаточно данных.
GADAdValuePrecisionEstimated Ценность объявления, рассчитанная на основе агрегированных данных.
GADAdValuePrecisionPublisherProvided Издатель предоставил ценность рекламы, например, ручную установку CPM в группе посредничества.
GADAdValuePrecisionPrecise Точная стоимость этой рекламы.

Тестовые показы из источников рекламы с торгами

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

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

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

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