Pour résoudre ce problème, AdMob propose l'initialisation de l'adaptateur configurable. 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 :
- Créer une configuration d'adaptateur
- Ignorer les adaptateurs non initialisés
- Initialiser les adaptateurs restants
Prérequis
- Importez GMA Next-Gen SDK v0.25.0-beta01 ou une version ultérieure.
- Configurez GMA Next-Gen SDK.
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 d'adaptateur indique à GMA Next-Gen SDK de n'initialiser que les adaptateurs requis. Cela évite que des adaptateurs inutiles ne bloquent 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 :
Donner la priorité à 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 d'annonce ou le bloc d'annonces spécifique dans la configuration d'initialisation de votre adaptateur.
L'exemple suivant crée une configuration d'initialisation d'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 toutes les annonces à l'ouverture d'une application et définit un délai avant 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 ne pouvez initialiser que cet adaptateur spécifique en fournissant le nom de la classe de l'adaptateur dans votre configuration d'initialisation de l'adaptateur. Combinez cela avec l'exclusion 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 d'adaptateur qui initialise un adaptateur de médiation spécifique et définit un délai avant 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 d'adaptateur de manière programmatique. L'exemple suivant extrait les noms de classe d'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 d'adaptateur qui exclut l'initialisation de certains adaptateurs et définit un délai avant 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 de sorte qu'elle ignore les adaptateurs non initialisés qui sont toujours présents dans votre cascade d'annonces.
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 émet une demande d'annonce sans attendre que les adaptateurs expirent ou ne s'initialisent pas.
L'exemple suivant initialise le SDK avec une configuration d'initialisation d'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 que vos opportunités d'annonces urgentes ont été chargées, initialisez les 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());