Utiliser l'initialisation d'adaptateur configurable (alpha)

Sélectionnez une plate-forme : Android iOS Android (ancienne version)

Par défaut, GMA Next-Gen SDK initialise tous les adaptateurs de médiation associés à votre application lors de l'initialisation. L'initialisation de chaque adaptateur peut prendre plus de 30 secondes, ce qui entraîne une latence importante avant le chargement de votre première annonce.

Pour résoudre ce problème, AdMob propose l'initialisation configurable de l'adaptateur. Cette fonctionnalité vous permet de contrôler les adaptateurs initialisés pour votre première impression d'annonce et de réduire la latence de cette impression.

Ce guide couvre les aspects suivants de l'initialisation de l'adaptateur configurable :

Prérequis

  • Activez cette fonctionnalité en ajoutant l'annotation @ExperimentalApi à votre classe :

    Kotlin

    @OptIn(ExperimentalApi::class)
    

    Java

    import androidx.annotation.OptIn;
    // ...
    @OptIn(markerClass = ExperimentalApi.class)
    

Créer une configuration d'adaptateur

Une configuration d'initialisation de l'adaptateur indique à GMA Next-Gen SDK d'initialiser uniquement les adaptateurs requis. Cela empêche les adaptateurs inutiles de bloquer votre première demande d'annonce, ce qui permet d'économiser des ressources de calcul et de réduire considérablement la latence de la première impression d'annonce.

Pour optimiser les performances de votre application, tenez compte des stratégies suivantes lorsque vous créez une configuration d'initialisation de l'adaptateur :

Prioriser un format d'annonce ou un bloc d'annonces spécifique

Améliorez les performances des applications qui affichent une annonce immédiatement au lancement, comme une annonce à l'ouverture d'une application, en déclarant le format ou le bloc d'annonces spécifiques dans la configuration d'initialisation de votre adaptateur.

L'exemple suivant crée une configuration d'initialisation de l'adaptateur qui n'initialise que les adaptateurs de médiation requis pour un bloc d'annonces à l'ouverture d'une application spécifique avec un délai avant expiration de cinq secondes :

Kotlin

val adapterConfig =
  AdapterInitializationConfig.Builder()
    .setAllowedAdUnitIds(setOf(AD_UNIT_ID))
    .setInitializationTimeoutMs(5000)
    .build()

Java

AdapterInitializationConfig adapterConfig =
    new AdapterInitializationConfig.Builder()
        .setAllowedAdUnitIds(Set.of(AD_UNIT_ID))
        .setInitializationTimeoutMs(5000)
        .build();

L'exemple suivant crée une configuration d'initialisation de l'adaptateur qui n'initialise que les adaptateurs de médiation requis pour tous les annonces interstitielles et définit un délai d'expiration de cinq secondes :

Kotlin

val adapterConfig =
  AdapterInitializationConfig.Builder()
    .setAllowedAdFormats(setOf(AdFormat.APP_OPEN_AD))
    .setInitializationTimeoutMs(5000)
    .build()

Java

AdapterInitializationConfig adapterConfig =
    new AdapterInitializationConfig.Builder()
        .setAllowedAdFormats(Set.of(AdFormat.APP_OPEN_AD))
        .setInitializationTimeoutMs(5000)
        .build();

Initialiser des adaptateurs de médiation spécifiques

Si vous savez exactement quels partenaires de médiation remplissent généralement votre première impression d'annonce, vous pouvez initialiser uniquement cet adaptateur spécifique en fournissant le nom de la classe d'adaptateur dans votre configuration d'initialisation d'adaptateur. Combinez cela avec le saut explicite des adaptateurs non initialisés et la définition d'un délai avant expiration pour GMA Next-Gen SDK afin de ne pas attendre les adaptateurs non initialisés restants pendant l'enchère.

L'exemple suivant crée une configuration d'initialisation de l'adaptateur qui initialise un adaptateur de médiation spécifique et définit un délai d'expiration de cinq secondes :

Kotlin

val adapterConfig =
  AdapterInitializationConfig.Builder()
    .setAllowedAdapterClasses(setOf(ADAPTER_JAVA_CLASS_NAME))
    .setInitializationTimeoutMs(5000)
    .build()

Java

AdapterInitializationConfig adapterConfig =
    new AdapterInitializationConfig.Builder()
        .setAllowedAdapterClasses(Set.of(ADAPTER_JAVA_CLASS_NAME))
        .setInitializationTimeoutMs(5000)
        .build();

Vous pouvez récupérer les noms de classe de l'adaptateur de manière programmatique. L'exemple suivant extrait les noms de classe de l'adaptateur de manière programmatique :

Kotlin

ExampleMediationAdapter::class.java.name

Java

ExampleMediationAdapter.class.getName()

Exclure des adaptateurs de médiation spécifiques

Si vous constatez que certains adaptateurs de médiation présentent une latence constamment élevée, vous pouvez les exclure et les initialiser ultérieurement.

L'exemple suivant crée une configuration d'initialisation de l'adaptateur qui exclut l'initialisation d'adaptateurs spécifiques et définit un délai d'expiration de cinq secondes :

Kotlin

val adapterConfig =
  AdapterInitializationConfig.Builder()
    .setExcludedAdapterClasses(setOf(ADAPTER_JAVA_CLASS_NAME))
    .setInitializationTimeoutMs(5000)
    .build()

Java

AdapterInitializationConfig adapterConfig =
    new AdapterInitializationConfig.Builder()
        .setExcludedAdapterClasses(Set.of(ADAPTER_JAVA_CLASS_NAME))
        .setInitializationTimeoutMs(5000)
        .build();

Ignorer les adaptateurs non initialisés

Si vous prévoyez d'initialiser ou d'exclure des adaptateurs de médiation spécifiques, vous pouvez configurer votre demande d'annonce pour ignorer les adaptateurs non initialisés qui sont toujours présents dans votre cascade.

Si vous ne créez pas de configuration d'adaptateur, vous pouvez toujours configurer votre demande d'annonce pour ignorer les adaptateurs non initialisés. GMA Next-Gen SDK envoie une demande d'annonce sans attendre l'expiration du délai avant expiration des adaptateurs ni l'échec de leur initialisation.

L'exemple suivant initialise le SDK avec une configuration d'initialisation de l'adaptateur et crée une demande d'annonce à l'ouverture d'une application qui ignore les adaptateurs non initialisés :

Kotlin

val initConfig =
  InitializationConfig.Builder(appId)
    .setAdapterInitializationConfig(adapterInitializationConfig)
    .build()

// Initialize the GMA Next-Gen SDK with a config containing your adapter initialization
// settings.
val backgroundScope = CoroutineScope(Dispatchers.IO)
backgroundScope.launch {
  MobileAds.initialize(context = context, initConfig) {

    // Make your ad request after adapter initialization completes.
    AppOpenAd.load(
      AdRequest.Builder(adUnitId = adUnitId)
        // Set this to guarantee that the ad request
        // doesn't wait for any other uninitialized adapters.
        .skipUninitializedAdapters()
        .build(),
      adLoadCallback =
        object : AdLoadCallback<AppOpenAd> {

          override fun onAdLoaded(ad: AppOpenAd) {
            // TODO: Your ad logic here
            // ....

            // Execute non-time-sensitive tasks after ad load completes.
            performPostLaunchSetup()
          }

          override fun onAdFailedToLoad(adError: LoadAdError) {
            // TODO: Handle load error.
            // ....

            // Ensure non-time-sensitive post-launch tasks execute even if ad load fails.
            performPostLaunchSetup()
          }
        },
    )
  }
}

Java

InitializationConfig initConfig =
    new InitializationConfig.Builder(appId)
        .setAdapterInitializationConfig(adapterInitializationConfig)
        .build();

// Initialize the GMA Next-Gen SDK with a config containing your adapter initialization
// settings.
MobileAds.initialize(
    context,
    initConfig,
    initializationStatus -> {
      // Make your ad request after adapter initialization completes.
      AppOpenAd.load(
          new AdRequest.Builder(adUnitId)
              // Set this to guarantee that the ad request
              // doesn't wait for any other uninitialized adapters.
              .skipUninitializedAdapters()
              .build(),
          new AdLoadCallback<AppOpenAd>() {
            @Override
            public void onAdLoaded(@NonNull AppOpenAd ad) {
              // TODO: Your ad logic here
              // ....

              // Execute non-time-sensitive tasks after ad load completes.
              performPostLaunchSetup();
            }

            @Override
            public void onAdFailedToLoad(@NonNull LoadAdError error) {
              // TODO: Handle load error.
              // ....

              // Ensure non-time-sensitive post-launch tasks execute even if ad load fails.
              performPostLaunchSetup();
            }
          });
    });

Initialiser les adaptateurs restants

Une fois vos opportunités publicitaires urgentes chargées, initialisez vos adaptateurs restants pour assurer une couverture complète de la médiation des partenaires pour le reste de la session de l'application.

L'exemple suivant initialise le reste des adaptateurs en fournissant une configuration vide :

Kotlin


// Provide initializeAdapters with an empty configuration to initialize
// any adapters not initialized with configurable initialization.
MobileAds.initializeAdapters(AdapterInitializationConfig.Builder().build())

Java

// Provide initializeAdapters with an empty configuration to initialize
// any adapters not initialized with configurable initialization.
MobileAds.initializeAdapters(new AdapterInitializationConfig.Builder().build());