Préchargement des annonces (alpha)

Sélectionnez une plate-forme : Android (bêta) Dernière sélection Android iOS Unity

Le préchargement des annonces est une fonctionnalité de chargement des annonces gérée par Google dans GMA Next-Gen SDK. Elle gère le chargement et la mise en cache des annonces pour vous. Le préchargement des annonces nécessite de modifier la façon dont vous gérez leur chargement. 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 pour que vous n'ayez pas à gérer les références tant que vous n'êtes pas prêt à les afficher.
  • Rechargement automatique : une nouvelle annonce est automatiquement chargée lorsque vous en retirez une du cache.
  • Nouvelles tentatives gérées : les requêtes ayant échoué sont automatiquement relancées à l'aide d'un intervalle exponentiel entre les tentatives.
  • Gestion de l'expiration : les annonces sont actualisées automatiquement avant leur expiration (généralement au bout d'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 préchargées, vérifier leur disponibilité et les afficher.

Prérequis

Avant de commencer le tutoriel, vous devez effectuer les opérations suivantes :

Commencer à précharger les annonces

Pour commencer à précharger les annonces, appelez startPreload(). Appelez cette méthode une seule fois au début de l'application. Après avoir appelé 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 lance le préchargement 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 d'annonces, GMA Next-Gen SDK contient les annonces mises en cache. Lorsque vous souhaitez diffuser une annonce, appelez pollAd(). GMA Next-Gen SDK récupère l'annonce disponible et précharge automatiquement la suivante en arrière-plan.

Évitez d'appeler cette méthode tant que vous n'êtes pas prêt à afficher une annonce. Le fait de conserver les annonces dans le cache permet à GMA Next-Gen SDK d'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);
  }
}

Vérifier la disponibilité des annonces préchargées

Pour vérifier la disponibilité des annonces, choisissez l'une des options suivantes :

Obtenir la disponibilité des annonces préchargées

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 préchargées

Enregistrez-vous pour les événements de préchargement afin d'être averti lorsque les annonces sont préchargées avec succès, lorsque le préchargement échoue 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énement de préchargement :

  • N'appelez pas startPreload().
  • Évitez d'appeler pollAd(), sauf si l'annonce doit être diffusée immédiatement.

L'exemple suivant enregistre les événements publicitaires :

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 de diffuser 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.

Définir la taille de la mémoire tampon

La taille du tampon contrôle le nombre d'annonces préchargées conservées en mémoire. Par défaut, Google optimise la taille du tampon pour équilibrer la consommation de mémoire et la latence de diffusion des annonces. Si votre application affiche des annonces avant le chargement de la suivante, vous pouvez définir une taille de tampon personnalisée pour augmenter le nombre d'annonces conservées en mémoire. Nous vous recommandons de ne pas dépasser une taille de mémoire tampon de quatre.

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);
}