Receita de publicidade no nível da impressão

Selecione a plataforma: Android iOS Unity

Quando uma impressão ocorre, o SDK dos Anúncios para Dispositivos Móveis do Google chama o manipulador de eventos pagos com os dados de receita associados. Ao implementar esse manipulador, você pode usar os dados para calcular o valor da vida útil de um usuário ou encaminhar os dados para outros sistemas relevantes.

Este guia foi criado para ajudar você a implementar a captura de dados de LTV no seu app iOS.

Pré-requisitos

Implementar um manipulador de eventos pagos

Cada formato de anúncio tem uma propriedade paidEventHandler do tipo GADPaidEventHandler. Durante o ciclo de vida de um evento de anúncio, o SDK dos Anúncios para Dispositivos Móveis do Google monitora eventos de impressão e invoca o gerenciador com um valor ganho.

Swift

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

Identificar um nome de origem de anúncios de evento personalizado

Para origens de anúncios de eventos personalizados, a propriedade adSourceName retorna o nome da origem Custom event. Se você usa vários eventos personalizados, o nome da origem de anúncios não é granular o suficiente para distinguir entre eles. Para localizar um evento personalizado específico, siga estas etapas:

  1. Acesse a propriedade adNetworkClassName.
  2. Defina um nome exclusivo para a origem de anúncios.

O exemplo a seguir define um nome exclusivo de origem de anúncios para um evento personalizado:

Swift

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

Para mais informações sobre a origem de anúncios vencedora, consulte Recuperar informações sobre a resposta do anúncio.

Fazer a integração com parceiros de atribuição de app (AAP)

Para detalhes completos do encaminhamento de dados sobre receita de publicidade para plataformas de análise, consulte o guia do parceiro:

SDK do parceiro
Adjust (link em inglês)
AppsFlyer
Singular
Tenjin

Práticas recomendadas de implementação

  • Defina o manipulador imediatamente depois de criar ou acessar o objeto de anúncio e, definitivamente, antes de mostrar o anúncio. Assim, você não perde nenhum callback de evento pago.
  • Envie as informações do evento pago para o servidor de análise de sua preferência assim que o método paidEventHandler for chamado. Isso garante que você não descarte acidentalmente nenhum callback e evita discrepâncias de dados.

GADAdValue

GADAdValue é uma classe que representa o valor monetário ganho com um anúncio, incluindo o código da moeda e o tipo de precisão do valor, codificados conforme abaixo.

GADAdValuePrecision Descrição
GADAdValuePrecisionUnknown É um valor de anúncio desconhecido. Retornado quando o pingback de LTV está ativado, mas não há dados suficientes disponíveis.
GADAdValuePrecisionEstimated É um valor de anúncio estimado com base nos dados agregados.
GADAdValuePrecisionPublisherProvided É um valor de anúncio fornecido pelo publisher, como CPMs manuais em um grupo de mediação.
GADAdValuePrecisionPrecise É o valor exato pago pelo anúncio.

Testar impressões de origens de anúncios dos lances

Depois que um evento de receita de publicidade no nível da impressão ocorre para uma origem de anúncio dos lances por uma solicitação de teste, você recebe apenas os seguintes valores:

  • GADAdValuePrecisionUnknown: indica o tipo de precisão.
  • 0: indica o valor do anúncio.

Antes, o tipo de precisão podia aparecer como um valor diferente de GADAdValuePrecisionUnknown e um valor de anúncio maior que 0.

Para detalhes sobre como enviar uma solicitação de anúncio de teste, consulte Ativar dispositivos de teste.