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 della modalità di gestione del 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:conserva 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 della scadenza (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 di precaricamento, controllare la disponibilità degli annunci di precaricamento e mostrare l'annuncio di precaricamento.
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 il precaricamento degli annunci
Per iniziare il precaricamento degli annunci, chiama startPreload(). Chiama questo metodo
una sola volta all'avvio dell'app. Dopo aver chiamato
startPreload(), GMA Next-Gen SDK precarica automaticamente
gli annunci e ritenta le richieste non riuscite per le configurazioni 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 di precaricamento
Quando utilizzi il precaricamento degli annunci, GMA Next-Gen SDK conserva 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.
Evita di chiamare questo metodo finché non è tutto pronto per mostrare un annuncio. Mantenendo gli annunci nella cache, GMA Next-Gen SDK può aggiornare automaticamente gli annunci scaduti ed eseguire l'ottimizzazione della cache.
L'esempio seguente recupera e mostra un annuncio di precaricamento:
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);
}
}
Controlla la disponibilità degli annunci di precaricamento
Per verificare la disponibilità degli annunci, scegli una delle seguenti opzioni:
- Recupera la disponibilità degli annunci di precaricamento
- Ascolta la disponibilità degli annunci di precaricamento
Recupera la disponibilità degli annunci di precaricamento
L'esempio seguente 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);
}
Ascolta la disponibilità degli annunci di precaricamento
Registra 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 degli eventi 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);
}
Interrompi il precaricamento degli annunci
Se non devi mostrare di nuovo gli annunci per un ID di precaricamento nella sessione, puoi interrompere il precaricamento degli annunci. Per interrompere il precaricamento degli annunci per un ID di precaricamento specifico, chiama destroy() con un ID di precaricamento.
Imposta la dimensione del buffer
La dimensione del buffer controlla il numero di annunci di precaricamento mantenuti in memoria. Per impostazione predefinita, Google ottimizza la dimensione del buffer per bilanciare il consumo di memoria e la latenza della pubblicazione degli annunci. Se la tua app mostra gli annunci prima che venga caricato l'annuncio successivo, puoi impostare una dimensione del buffer personalizzata per aumentare il numero di annunci mantenuti in memoria. Ti consigliamo di impostare una dimensione del buffer di massimo quattro.
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);
}