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
- Assicurati di aver attivato la funzionalità delle entrate pubblicitarie a livello di impressione nell'interfaccia utente di AdMob.
- Importa l'SDK Google Mobile Ads 21.1.0 o versioni successive.
- Completa la Guida introduttiva.
Prima di poter ricevere entrate pubblicitarie a livello di impressione, devi implementare almeno un formato dell'annuncio:
Gestore di eventi a pagamento
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.