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 :
- 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 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 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());