Configurer des annonces à l'ouverture d'une application

Les annonces à l'ouverture d'une application sont un format d'annonce destiné aux éditeurs qui souhaitent monétiser les écrans de chargement de leur application. Vos utilisateurs peuvent fermer les annonces à l'ouverture d'une application à tout moment. Lorsque les utilisateurs mettent votre application au premier plan, diffusez des annonces à l'ouverture d'une application.

Pour en savoir plus, consultez les conseils sur les annonces à l'ouverture d'une application.

Ce guide explique comment intégrer des annonces à l'ouverture d'une application dans une application Android.

Avant de commencer

Avant de continuer, procédez comme suit :

  • Configurez GMA Next-Gen SDK.
  • Utilisez l'ID du bloc d'annonces à l'ouverture d'une application test ca-app-pub-3940256099942544/9257395921.
    • Lorsque vous créez et testez votre application, assurez-vous d'utiliser des annonces tests plutôt que des annonces de production. Si vous n'utilisez pas l'ID du bloc d'annonces de test, Google peut suspendre votre compte.
    • Avant de publier votre application, remplacez cet ID par l'ID de votre bloc d'annonces.
    • Pour en savoir plus sur les annonces tests GMA Next-Gen SDK, consultez Activer les annonces tests.

Comprendre le préchargement des annonces (bêta)

Le préchargement des annonces dans GMA Next-Gen SDK automatise le chargement et la mise en cache des annonces.

Le préchargement des annonces offre les avantages suivants :

  • Gestion des références : conserve les références jusqu'à ce que les annonces soient diffusées.
  • Rechargement automatique : charge une nouvelle annonce lorsqu'une annonce est récupérée du cache.
  • Nouvelles tentatives gérées : charge une nouvelle annonce lorsqu'une annonce ne se charge pas.
  • Gestion de l'expiration : actualise les annonces avant leur expiration.
  • Optimisation du cache : optimise l'ordre du cache pour diffuser l'annonce ayant la priorité la plus élevée.

Démarrer le préchargement des annonces

Pour commencer à précharger des annonces, appelez une fois la méthode start lorsque vous initialisez GMA Next-Gen SDK. Après avoir appelé la méthode start, 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 montre comment lancer le préchargement des annonces :

Kotlin

val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
AppOpenAdPreloader.start(adUnitId, preloadConfig)

Java

AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
AppOpenAdPreloader.start(adUnitId, preloadConfig);

Remplacez AD_UNIT_ID par l'ID de votre bloc d'annonces.

L'exemple précédent montre comment utiliser l'ID du bloc d'annonces comme ID de préchargement. Un ID de préchargement est un identifiant de chaîne que vous créez pour identifier une configuration de préchargement des annonces. Si votre application nécessite plusieurs configurations de ciblage pour le même ID de bloc d'annonces, transmettez un identifiant de chaîne personnalisé.

Le préchargement des annonces ne permet pas de modifier les paramètres de ciblage ni les demandes d'annonces. Si vous devez modifier les paramètres de ciblage entre les requêtes, utilisez le chargement unique.

Obtenir et afficher l'annonce préchargée

Avant de diffuser l'annonce, appelez la méthode pollAd. Ne stockez pas l'objet d'annonce préchargé. Lorsque vous appelez la méthode pollAd, GMA Next-Gen SDK récupère une annonce disponible et précharge automatiquement l'annonce suivante en arrière-plan. Si aucune annonce n'est disponible, GMA Next-Gen SDK ne renvoie aucune annonce.

Lorsque vous disposez d'un objet d'annonce, appelez la méthode show pour afficher l'annonce. L'exemple suivant montre comment récupérer et afficher 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 = AppOpenAdPreloader.pollAd(adUnitId)
  if (ad == null) {
    Log.e(TAG, "App open ad is not available.")
    return
  }

  // Interact with the ad object as needed.
  Log.d(TAG, "App open ad response info: ${ad.getResponseInfo()}")
  ad.adEventCallback =
    object : AppOpenAdEventCallback {
      override fun onAdImpression() {
        Log.d(TAG, "App open ad recorded an impression.")
      }
    }
  ad.show(activity)
}

Java

private void pollAndShowAd(Activity activity, String adUnitId) {
  // Polling returns the next available ad and loads another ad in the background.
  AppOpenAd ad = AppOpenAdPreloader.pollAd(adUnitId);

  // Interact with the ad object as needed.
  if (ad == null) {
    Log.e(TAG, "App open ad is not available.");
    return;
  }

  Log.d(TAG, "App open ad response info: " + ad.getResponseInfo());
  ad.setAdEventCallback(
      new AppOpenAdEventCallback() {
        @Override
        public void onAdImpression() {
          Log.d(TAG, "App open ad recorded an impression.");
        }
      });

  // Show the ad.
  ad.show(activity);
}

Lorsque votre application atteint un emplacement d'annonce et peut appeler la méthode show, appelez la méthode pollAd. N'appelez pas la méthode pollAd dans les rappels de préchargement ni après avoir vérifié la méthode isAdAvailable pour conserver une annonce. Si vous devez inspecter les métadonnées de l'annonce avant de l'afficher, lisez les informations de la réponse sans supprimer l'annonce du cache.

Écouter les événements d'annonce

Avant de diffuser l'annonce, écoutez les événements d'annonce. L'exemple suivant enregistre des rappels pour les événements d'annonce :

Kotlin

private fun listenToAdEvents() {
  // Listen for ad events.
  val ad = appOpenAd
  if (ad == null) {
    Log.e(TAG, "App open ad is not ready yet.")
    return
  }

  ad.adEventCallback =
    object : AppOpenAdEventCallback {
      override fun onAdShowedFullScreenContent() {
        // App open ad did show.
      }

      override fun onAdDismissedFullScreenContent() {
        // App open ad did dismiss.
        appOpenAd = null
      }

      override fun onAdFailedToShowFullScreenContent(
        fullScreenContentError: FullScreenContentError
      ) {
        // App open ad failed to show.
        Log.e(TAG, "App open ad failed to show: ${fullScreenContentError.message}")
      }

      override fun onAdImpression() {
        // App open ad did record an impression.
      }

      override fun onAdClicked() {
        // App open ad did record a click.
      }
    }
}

Java

private void listenToAdEvents() {
  // Listen for ad events.
  if (appOpenAd == null) {
    Log.e(TAG, "App open ad is not ready yet.");
    return;
  }

  appOpenAd.setAdEventCallback(
      new AppOpenAdEventCallback() {
        @Override
        public void onAdShowedFullScreenContent() {
          // App open ad did show.
        }

        @Override
        public void onAdDismissedFullScreenContent() {
          // App open ad did dismiss.
          appOpenAd = null;
        }

        @Override
        public void onAdFailedToShowFullScreenContent(
            @NonNull FullScreenContentError fullScreenContentError) {
          // App open ad failed to show.
          Log.e(TAG, "App open ad failed to show: " + fullScreenContentError.getMessage());
        }

        @Override
        public void onAdImpression() {
          // App open ad did record an impression.
        }

        @Override
        public void onAdClicked() {
          // App open ad did record a click.
        }
      });
}

Facultatif : Écouter les événements de préchargement

Lorsque vous commencez à précharger des annonces, enregistrez-vous pour recevoir des événements de préchargement afin d'être averti lorsque les annonces sont préchargées, que le préchargement échoue ou que le cache d'annonces est épuisé.

L'exemple suivant montre comment s'enregistrer pour les événements d'annonce de préchargement :

Kotlin

val preloadCallback =
  object : PreloadCallback {
    override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
      Log.d(TAG, "App open preload ad $preloadId failed to load with error: ${adError.message}")
    }

    override fun onAdsExhausted(preloadId: String) {
      Log.i(TAG, "App open preload ad $preloadId is not available")
    }

    override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) {
      Log.i(TAG, "App open preload ad $preloadId is available")
    }
  }
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
AppOpenAdPreloader.start(adUnitId, preloadConfig, preloadCallback)

Java

PreloadCallback preloadCallback =
    new PreloadCallback() {
      @Override
      public void onAdFailedToPreload(@NonNull String preloadId, @NonNull LoadAdError adError) {
        Log.d(
            TAG,
            String.format(
                "App open preload ad %s failed to load with error: %s",
                preloadId, adError.getMessage()));
      }

      @Override
      public void onAdsExhausted(@NonNull String preloadId) {
        Log.i(TAG, String.format("App open preload ad %s is not available", preloadId));
      }

      @Override
      public void onAdPreloaded(@NonNull String preloadId, @NonNull ResponseInfo responseInfo) {
        Log.i(TAG, String.format("App open preload ad %s is available", preloadId));
      }
    };
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
AppOpenAdPreloader.start(adUnitId, preloadConfig, preloadCallback);

Lorsqu'une annonce ne se charge pas, GMA Next-Gen SDK précharge automatiquement les annonces et relance les requêtes ayant échoué pour les configurations préchargées. N'appelez pas de requêtes de chargement manuel dans les rappels d'échec. Dans les méthodes de rappel d'événement de préchargement, n'appelez pas les méthodes pollAd, destroy ou start. L'appel de ces méthodes dans des rappels peut appeler des boucles de chargement récursives.

Facultatif : Vérifier la disponibilité des annonces

Si vous avez besoin de savoir si une annonce est disponible, vérifiez sa disponibilité. L'exemple suivant vérifie si une annonce préchargée est disponible :

Kotlin

private fun isAdAvailable(adUnitId: String): Boolean {
  return AppOpenAdPreloader.isAdAvailable(adUnitId)
}

Java

private boolean isAdAvailable(String adUnitId) {
  return AppOpenAdPreloader.isAdAvailable(adUnitId);
}

Facultatif : 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. Vous pouvez définir une taille de la mémoire tampon personnalisée pour augmenter ou diminuer le nombre d'annonces conservées en mémoire. Nous vous recommandons de précharger deux annonces. Si la majeure partie de votre trafic provient d'appareils disposant de peu de mémoire, réduisez la taille de la mémoire tampon.

L'exemple suivant montre comment définir une taille de mémoire tampon :

Kotlin

val adRequest = AdRequest.Builder(adUnitId).build()
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2)
AppOpenAdPreloader.start(adUnitId, preloadConfig)

Java

AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 2);
AppOpenAdPreloader.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 l'ensemble des blocs d'annonces et des ID de préchargement :

  • Limite par défaut : Google conserve un maximum de six annonces préchargées en mémoire. Cette limite est partagée entre tous les formats et ID de préchargement.
  • Nous vous recommandons de conserver une taille de tampon de deux pour chaque ID de préchargement.

Facultatif : Arrêter de précharger les annonces

Laissez le préchargement actif pendant que votre application diffuse des annonces. Pendant ce temps, n'appelez pas la méthode destroy. Si vous n'avez plus besoin de diffuser d'annonces pour un ID de préchargement spécifique au cours de la session, vous pouvez arrêter de précharger les annonces. Pour arrêter de charger des annonces pour un ID de préchargement spécifique, appelez la méthode destroy avec un ID de préchargement. L'appel de la méthode destroy supprime du cache toutes les annonces préchargées associées à l'ID de préchargement.

L'exemple suivant montre comment arrêter le préchargement des annonces :

Kotlin

private fun stopPreloading(adUnitId: String) {
  // Stops the preloading and destroy preloaded ads.
  AppOpenAdPreloader.destroy(adUnitId)
}

Java

private void stopPreloading(String adUnitId) {
  // Stops the preloading and destroy preloaded ads.
  AppOpenAdPreloader.destroy(adUnitId);
}

Facultatif : lisez les informations de la réponse.

Lit les informations de réponse de l'annonce préchargée suivante sans supprimer l'annonce du cache. Si vous devez inspecter les métadonnées d'une annonce avant de la diffuser, lisez les informations de la réponse au lieu d'appeler la méthode pollAd.

L'exemple suivant montre comment lire les informations de la réponse d'annonce préchargée suivante :

Kotlin

val responseInfo = AppOpenAdPreloader.peekAdResponseInfo(preloadId)
if (responseInfo == null) {
  Log.e(TAG, "Failed to peek ad response info.")
  return
}

Log.d(TAG, "Peeked ad response ID: ${responseInfo.responseId}")

Java

ResponseInfo responseInfo = AppOpenAdPreloader.peekAdResponseInfo(preloadId);
if (responseInfo == null) {
  Log.e(TAG, "Failed to peek ad response info.");
  return;
}

Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());

Gérer les démarrages à froid et les écrans de chargement

Un démarrage à froid se produit lorsque votre application est lancée à partir du disque, et un démarrage à chaud se produit lorsque vous rouvrez l'application à partir de la mémoire. Lors d'un démarrage à froid, vous ne disposez pas d'une annonce préchargée à afficher immédiatement. Lors d'un démarrage à chaud, il est possible qu'une annonce préchargée soit toujours prête à être diffusée.

Lors d'un démarrage à froid, les utilisateurs peuvent interagir avec votre application avant qu'elle ne charge et n'affiche une annonce. Pour éviter une mauvaise expérience utilisateur, n'affichez les annonces à l'ouverture d'une application lors d'un démarrage à froid que sur un écran de chargement pendant le chargement des éléments de l'application. Si le chargement des assets est terminé et que l'utilisateur accède au contenu principal avant le chargement de l'annonce, ne la diffusez pas.

Recommandations

Suivez ces recommandations pour les annonces à l'ouverture d'une application :

  • Ne diffusez pas d'annonce à l'ouverture de l'application lors du tout premier démarrage de l'application.
  • Si votre écran de chargement finit de charger pendant la diffusion de l'annonce, fermez-le dans la méthode de rappel de fermeture de l'annonce.
  • Les annonces à l'ouverture d'une application expirent quatre heures après leur chargement. Ne diffusez pas d'annonce à l'ouverture d'une application qui a été chargée depuis plus de quatre heures.