Entrate pubblicitarie a livello di impressione

Quando si verifica un'impressione, l'SDK Google Mobile Ads fornisce dati sulle entrate pubblicitarie associate all'impressione. Puoi utilizzare i dati per calcolare il lifetime value di un utente o inoltrare i dati a valle ad altri sistemi pertinenti.

Questa guida ha lo scopo di aiutarti a implementare l'acquisizione dei dati sulle entrate pubblicitarie a livello di impressione nella tua app per Android.

Prerequisiti

Ogni formato dell'annuncio ha un OnPaidEventListener. Durante il ciclo di vita di un evento annuncio, l'SDK Google Mobile Ads monitora gli eventi di impressioni e richiama il gestore con un valore ottenuto.

Il codice seguente mostra come gestire gli eventi a pagamento per un annuncio con premio:

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) {
    Richiesta di annuncio adRequest = new Richiesta di annuncio.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?) {
    Richiesta di annuncio adRequest = new Richiesta di annuncio.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")
          }
        }
    })
  }
}

Per ulteriori informazioni sull'origine annuncio vincente, consulta l'articolo Recuperare informazioni sulla risposta di annuncio.

Integrazione dei partner di attribuzione app (AAP)

Per informazioni dettagliate sull'inoltro dei dati sulle entrate pubblicitarie alle piattaforme di analisi, consulta la guida per i partner:

SDK partner
Adjust
AppsFlyer
Singular
Tenjin

Best practice per l'implementazione

  • Imposta il listener immediatamente dopo aver creato o ottenuto l'accesso all'oggetto annuncio e sicuramente prima di mostrare l'annuncio. In questo modo eviterai di perdere eventuali callback di eventi a pagamento.
  • Invia immediatamente le informazioni sulle entrate pubblicitarie a livello di impressione al tuo server di analisi preferito nel momento in cui viene chiamato il metodo onPaidEvent(). In questo modo eviterai di perdere accidentalmente callback ed evita discrepanze tra i dati.

AdValue

AdValue è una classe che rappresenta il valore monetario guadagnato per un annuncio, inclusi il codice valuta del valore e il tipo di precisione codificato come indicato di seguito.

PrecisionType Descrizione
UNKNOWN Valore annuncio sconosciuto. Questo errore viene restituito quando è abilitato il pingback LTV, ma non sono disponibili dati sufficienti.
ESTIMATED Un valore annuncio stimato in base a dati aggregati.
PUBLISHER_PROVIDED Il valore dell'annuncio fornito da un publisher, ad esempio i CPM manuali in un gruppo di mediazione.
PRECISE Il valore esatto pagato per questo annuncio.

In caso di mediazione, AdMob prova a fornire un valore ESTIMATED per le origini annuncioottimizzate. Per le origini annuncio non ottimizzate o nei casi in cui i dati aggregati non siano sufficienti per segnalare una stima significativa, il valore PUBLISHER_PROVIDED viene restituito.