Receita de publicidade no nível da impressão

Quando ocorre uma impressão, o SDK dos anúncios para dispositivos móveis do Google fornece dados de receita de publicidade associados a ela. Use os dados para calcular o valor da vida útil de um usuário ou encaminhar os dados para outros sistemas relevantes.

Este guia ajuda a implementar a captura de dados de receita de publicidade no nível da impressão no seu app Android.

Pré-requisitos

Cada formato tem um OnPaidEventListener. 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.

O código abaixo demonstra como processar eventos pagos de um anúncio premiado:

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

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

Integração de parceiros de atribuição de app (AAP)

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

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

Práticas recomendadas de implementação

  • Defina o listener imediatamente depois de criar ou acessar o objeto de anúncio e definitivamente antes de mostrar o anúncio. Isso garante que você não perca callbacks de eventos pagos.
  • Envie as informações de receita de publicidade no nível da impressão ao seu servidor de análise preferido imediatamente no momento em que o método onPaidEvent() for chamado. Isso garante que você não descarte callbacks acidentalmente e evite discrepâncias de dados.

AdValue

AdValue é uma classe que representa o valor monetário recebido por um anúncio, incluindo o código de moeda do valor e o tipo de precisão codificado conforme abaixo.

PrecisionType Descrição
UNKNOWN Um valor de anúncio desconhecido. Ele é retornado quando o pingback de LTV está ativado, mas não há dados suficientes disponíveis.
ESTIMATED Um valor de anúncio estimado com base nos dados agregados.
PUBLISHER_PROVIDED Um editor forneceu um valor de anúncio, como CPMs manuais em um grupo de mediação.
PRECISE O valor exato pago por este anúncio.

No caso da mediação, AdMob tenta fornecer um valor ESTIMATED para origens de anúncios quesão otimizadas. Para origens de anúncios não otimizadas ou em casos em que não há dados agregados suficientes para informar uma estimativa significativa, o valor PUBLISHER_PROVIDED é retornado.