Le préchargement des annonces est une fonctionnalité de chargement des annonces gérée par Google dans GMA Next-Gen SDK qui gère le chargement et la mise en cache des annonces à votre place. Le préchargement des annonces nécessite de modifier la façon dont vous gérez le chargement des annonces. Pour optimiser les performances à l'aide du préchargement des annonces, désactivez la mise en cache personnalisée et déléguez cette responsabilité à GMA Next-Gen SDK.
Le préchargement des annonces offre les avantages suivants par rapport au chargement manuel des annonces :
- Gestion des références : conserve les annonces chargées afin que vous n'ayez pas à gérer les références tant que vous n'êtes pas prêt à les afficher.
- Rechargement automatique : charge automatiquement une nouvelle annonce lorsque vous en retirez une du cache.
- Nouvelles tentatives gérées : relance automatiquement les requêtes ayant échoué à l'aide d'un intervalle exponentiel entre les tentatives.
- Gestion de l'expiration : actualise automatiquement les annonces avant leur expiration (généralement après une heure).
- Optimisation du cache : si vous utilisez une taille de cache supérieure à un, GMA Next-Gen SDK optimise l'ordre du cache pour diffuser la meilleure annonce.
Ce guide explique comment configurer les annonces de préchargement, vérifier leur disponibilité et les afficher.
Prérequis
Avant de suivre ce tutoriel, vous devez configurer GMA Next-Gen SDK.
Commencer à précharger des annonces
Lorsque l'application démarre, appelez la méthode startPreload une seule fois. Une fois
que vous avez appelé la méthode startPreload, GMA Next-Gen SDK précharge automatiquement
les annonces et relance les requêtes ayant échoué pour les configurations préchargées.
L'exemple suivant commence à précharger des annonces :
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);
}
Obtenir et afficher l'annonce préchargée
Lorsque vous utilisez le préchargement des annonces, GMA Next-Gen SDK conserve les annonces mises en cache.
Lorsque vous souhaitez afficher une annonce, appelez pollAd.
GMA Next-Gen SDK récupère l'annonce disponible et précharge automatiquement
l'annonce suivante en arrière-plan.
Évitez d'appeler la méthode pollAd tant que vous n'êtes pas prêt à afficher une annonce. Le fait de conserver les annonces dans le cache permet de GMA Next-Gen SDK actualiser automatiquement
les annonces expirées et d'optimiser le cache.
L'exemple suivant récupère et affiche une annonce préchargée :
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);
}
}
Obtenir les métadonnées de l'annonce préchargée
Pour obtenir les métadonnées d'une annonce préchargée, vous pouvez rechercher l'objet d'informations de réponse de l'annonce. Ce processus vous permet d'inspecter les métadonnées de l'annonce sans la supprimer du cache.
L'exemple suivant recherche les métadonnées d'une annonce préchargée à partir de l'objet d'informations de réponse :
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());
}
}
Vérifier la disponibilité des annonces de préchargement
Pour vérifier la disponibilité des annonces, choisissez l'une des options suivantes :
- Obtenir la disponibilité des annonces de préchargement
- Écouter la disponibilité des annonces de préchargement
Obtenir la disponibilité des annonces de préchargement
L'exemple suivant vérifie la disponibilité des annonces :
Kotlin
private fun isAdAvailable(adUnitId: String): Boolean {
return InterstitialAdPreloader.isAdAvailable(adUnitId)
}
Java
private boolean isAdAvailable(String adUnitId) {
return InterstitialAdPreloader.isAdAvailable(adUnitId);
}
Écouter la disponibilité des annonces de préchargement
Inscrivez-vous aux événements de préchargement pour être averti lorsque les annonces sont préchargées, ne parviennent pas à être préchargées ou lorsque le cache d'annonces est épuisé.
Les événements de préchargement sont destinés à des fins d'analyse. Dans les rappels d'événements de préchargement :
- N'appelez pas
startPreload. - Évitez d'appeler
pollAd, sauf si l'annonce est diffusée immédiatement.
L'exemple suivant s'inscrit aux événements d'annonces :
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);
}
Arrêter le préchargement des annonces
Si vous n'avez plus besoin d'afficher des annonces pour un ID de préchargement dans la session, vous pouvez arrêter le préchargement des annonces. Pour arrêter le préchargement des annonces pour un ID de préchargement spécifique, appelez destroy avec un ID de préchargement. Pour arrêter le préchargement pour tous les préchargeurs, appelez destroyAll.
Définir la taille de la mémoire tampon
La taille de la mémoire tampon contrôle le nombre d'annonces préchargées conservées en mémoire. Par défaut, Google optimise la taille de la mémoire tampon pour équilibrer la consommation de mémoire et la latence de diffusion des annonces. Si votre application diffuse des annonces avant le chargement de l'annonce suivante, vous pouvez définir une taille de mémoire tampon personnalisée pour augmenter le nombre d'annonces conservées en mémoire.
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);
}
Limites du cache de préchargement
GMA Next-Gen SDK applique une limite à l'échelle de l'application sur le nombre total d'annonces préchargées pour tous les blocs d'annonces et tous les ID de préchargement :
- Limite par défaut : GMA Next-Gen SDK conserve un maximum de six annonces préchargées en mémoire. Cette limite est partagée entre tous les formats et tous les ID de préchargement.
- Nous vous recommandons de conserver une taille de mémoire tampon de deux ou trois par ID de préchargement.