Il precaricamento degli annunci è una funzionalità di caricamento degli annunci gestita da Google in GMA Next-Gen SDK che gestisce il caricamento e la memorizzazione nella cache degli annunci per tuo conto. Il precaricamento degli annunci richiede una modifica nel modo in cui gestisci il caricamento degli annunci. Per ottimizzare il rendimento utilizzando il precaricamento degli annunci, disattiva la memorizzazione nella cache personalizzata e delega questa responsabilità a GMA Next-Gen SDK.
Il precaricamento degli annunci offre i seguenti vantaggi rispetto al caricamento manuale degli annunci:
- Gestione dei riferimenti:contiene gli annunci caricati in modo da non dover mantenere i riferimenti finché non sono pronti per essere mostrati.
- Ricaricamento automatico:carica automaticamente un nuovo annuncio quando ne estrai uno dalla cache.
- Ritentativi gestiti:ritenta automaticamente le richieste non riuscite utilizzando il backoff esponenziale.
- Gestione della scadenza:aggiorna automaticamente gli annunci prima che scadano (in genere dopo un'ora).
- Ottimizzazione della cache:se utilizzi una dimensione della cache maggiore di uno, GMA Next-Gen SDK ottimizza l'ordine della cache per pubblicare l'annuncio migliore.
Questa guida illustra come configurare gli annunci precaricati, controllare la disponibilità degli annunci precaricati e mostrare l'annuncio precaricato.
Prerequisiti
Prima di procedere con il tutorial, devi completare i seguenti passaggi:
- Installa GMA Next-Gen SDK versione 0.14.0-alpha01 o successive.
- Configura GMA Next-Gen SDK.
- (Facoltativo) Scarica ed esegui l'app di esempio.
Inizia a precaricare gli annunci
Per iniziare a precaricare gli annunci, chiama il numero startPreload(). Chiama questo metodo
una sola volta per ogni ID precaricamento. Ti consigliamo di chiamare il metodo all'inizio della sessione dell'app. Dopo aver chiamato startPreload(), GMA Next-Gen SDK
precarica automaticamente gli annunci e riprova le richieste non riuscite per questi ID di precaricamento.
L'esempio seguente avvia il precaricamento degli annunci:
Kotlin
private fun startPreloading(adUnitId: String) {
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig)
}
Java
private void startPreloading(String adUnitId) {
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig);
}
Recupera e mostra l'annuncio precaricato
Quando utilizzi il precaricamento degli annunci, GMA Next-Gen SDK contiene gli annunci memorizzati nella cache.
Quando vuoi mostrare un annuncio, chiama pollAd().
GMA Next-Gen SDK recupera l'annuncio disponibile e precarica automaticamente
l'annuncio successivo in background.
L'esempio seguente recupera e mostra un annuncio precaricato:
Kotlin
private fun pollAndShowAd(activity: Activity, adUnitId: String) {
// Polling returns the next available ad and loads another ad in the background.
val ad = InterstitialAdPreloader.pollAd(adUnitId)
// Interact with the ad object as needed.
ad?.apply {
Log.d(TAG, "Interstitial ad response info: ${this.getResponseInfo()}")
this.adEventCallback =
object : InterstitialAdEventCallback {
override fun onAdImpression() {
Log.d(TAG, "Interstitial ad recorded an impression.")
}
override fun onAdPaid(value: AdValue) {
Log.d(TAG, "Interstitial ad onPaidEvent: ${value.valueMicros} ${value.currencyCode}")
}
}
// Show the ad.
ad.show(activity)
}
}
Java
private void pollAndShowAd(Activity activity, String adUnitId) {
// Polling returns the next available ad and loads another ad in the background.
final InterstitialAd ad = InterstitialAdPreloader.pollAd(adUnitId);
// Interact with the ad object as needed.
if (ad != null) {
Log.d(TAG, "Interstitial ad response info: " + ad.getResponseInfo());
ad.setAdEventCallback(
new InterstitialAdEventCallback() {
@Override
public void onAdImpression() {
Log.d(TAG, "Interstitial ad recorded an impression.");
}
@Override
public void onAdPaid(AdValue value) {
Log.d(
TAG,
"Interstitial ad onPaidEvent: "
+ value.getValueMicros()
+ " "
+ value.getCurrencyCode());
}
});
// Show the ad.
ad.show(activity);
}
}
Recuperare i metadati degli annunci precaricati
Per ottenere i metadati dell'annuncio precaricati, puoi cercare l'oggetto delle informazioni sulla risposta dell'annuncio. Questo processo ti consente di esaminare i metadati dell'annuncio senza rimuoverli dalla cache.
L'esempio seguente cerca i metadati di un annuncio precaricato dall'oggetto info della risposta:
Kotlin
private fun peekAdResponseInfo(preloadId: String) {
InterstitialAdPreloader.peekAdResponseInfo(preloadId)?.let {
Log.d(TAG, "Peeked ad response ID: ${it.responseId}")
}
}
Java
private void peekAdResponseInfo(String preloadId) {
ResponseInfo responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId);
if (responseInfo != null) {
Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());
}
}
Controllare la disponibilità del precaricamento degli annunci
Per verificare la disponibilità degli annunci, scegli una delle seguenti opzioni:
- Ottenere la disponibilità degli annunci pre-roll
- Ascolta la disponibilità degli annunci pre-caricati
Recuperare la disponibilità degli annunci precaricati
Il seguente esempio verifica la disponibilità degli annunci:
Kotlin
private fun isAdAvailable(adUnitId: String): Boolean {
return InterstitialAdPreloader.isAdAvailable(adUnitId)
}
Java
private boolean isAdAvailable(String adUnitId) {
return InterstitialAdPreloader.isAdAvailable(adUnitId);
}
Ascoltare la disponibilità degli annunci precaricati
Registrati per gli eventi di precaricamento per ricevere una notifica quando gli annunci vengono precaricati correttamente, non vengono precaricati o la cache degli annunci è esaurita.
Gli eventi di precaricamento sono destinati a scopi di analisi. All'interno dei callback dell'evento di precaricamento:
- Non chiamare
startPreload(). - Evita di chiamare
pollAd()a meno che l'annuncio non venga mostrato immediatamente.
L'esempio seguente registra gli eventi degli annunci:
Kotlin
private fun startPreloadingWithCallback(adUnitId: String) {
val preloadCallback =
// [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
object : PreloadCallback {
override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
Log.i(
TAG,
("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"),
)
// [Optional] Get the error response info for additional details.
// val responseInfo = adError.responseInfo
}
override fun onAdsExhausted(preloadId: String) {
Log.i(TAG, "Interstitial preload ad $preloadId is not available")
// [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted.
}
override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) {
Log.i(TAG, "Interstitial preload ad $preloadId is available")
}
}
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
}
Java
private void startPreloadingWithCallback(String adUnitId) {
PreloadCallback preloadCallback =
// [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
new PreloadCallback() {
@Override
public void onAdFailedToPreload(String preloadId, LoadAdError adError) {
Log.e(
TAG,
String.format(
"Interstitial preload ad %s failed to load with error: %s",
preloadId, adError.getMessage()));
// [Optional] Get the error response info for additional details.
// ResponseInfo responseInfo = adError.getResponseInfo();
}
@Override
public void onAdsExhausted(String preloadId) {
Log.i(TAG, "Interstitial preload ad " + preloadId + " is not available");
// [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted.
}
@Override
public void onAdPreloaded(String preloadId, ResponseInfo responseInfo) {
Log.i(TAG, "Interstitial preload ad " + preloadId + " is available");
}
};
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
}
Interrompere il precaricamento degli annunci
Se non devi mostrare di nuovo annunci per un ID precaricamento nella sessione, puoi interrompere il precaricamento degli annunci. Per interrompere
il precaricamento degli annunci per un ID precaricamento specifico, chiama destroy() con
un ID precaricamento. Per interrompere il precaricamento per tutti i precaricatori, chiama
destroyAll().
Impostare la dimensione del buffer
La dimensione del buffer controlla il numero di annunci precaricati memorizzati. Per impostazione predefinita, Google ottimizza le dimensioni del buffer per bilanciare il consumo di memoria e la latenza della pubblicazione degli annunci. Se la tua app mostra annunci prima che venga caricato l'annuncio successivo, puoi impostare una dimensione del buffer personalizzata per aumentare il numero di annunci memorizzati. Ti consigliamo una dimensione del buffer pari a due o tre.
Limiti di precaricamento della cache
GMA Next-Gen SDK impone un limite a livello di app al numero totale di annunci precaricati in tutte le unità pubblicitarie e gli ID precaricamento:
- Limite predefinito: GMA Next-Gen SDK contiene un massimo di sei annunci precaricati in memoria. Questo limite è condiviso tra tutti i formati e gli ID precaricamento.
- Ti consigliamo di mantenere una dimensione del buffer di due o tre per ID precaricamento.
Kotlin
private fun setBufferSize(adUnitId: String) {
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 3)
InterstitialAdPreloader.start(adUnitId, preloadConfig)
}
Java
private void setBufferSize(String adUnitId) {
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 3);
InterstitialAdPreloader.start(adUnitId, preloadConfig);
}