L'initialisation d'une application avec de longues chaînes de médiation en cascade et plusieurs adaptateurs tiers peut augmenter la latence des demandes d'annonces pour les impressions critiques qui s'affichent en premier dans la session de l'utilisateur. Cette latence accrue de la première impression peut empêcher l'annonce de s'afficher, car la demande d'annonce n'a pas encore renvoyé de réponse.
Ce guide explique comment réduire la latence de la première impression dans vos sessions d'application :
- Définir un délai avant expiration de l'initialisation
- Supprimer les sources publicitaires en cascade de votre première demande
- Améliorer les performances pour les impressions moins urgentes
Avant de commencer
Avant de continuer, configurez Google Mobile Ads SDK (Legacy).
Définir un délai avant expiration de l'initialisation
Pour éviter de manquer une opportunité d'impression, définissez un délai avant expiration de l'initialisation. Cette approche empêche votre application de dépasser la limite de temps que vous avez définie. Vous pouvez poursuivre la demande d'annonce après le délai que vous avez défini ou une fois l'initialisation terminée.
L'exemple suivant définit un délai avant expiration d'initialisation de cinq secondes :
Kotlin
// Set up a CONFLATED channel that only buffers the latest event.
private val adLoadChannel = Channel<Unit>(Channel.CONFLATED)
fun initialize(context: Context) {
// Coroutine to handle the 5-second timeout.
CoroutineScope(Dispatchers.Default).launch {
delay(5000L)
// 5 second timer elapsed
adLoadChannel.trySend(Unit)
}
// Coroutine to call MobileAds.initialize() on a background thread.
CoroutineScope(Dispatchers.IO).launch {
MobileAds.initialize(context) {
// Mobile Ads SDK initialization finished.
adLoadChannel.trySend(Unit)
}
}
// Coroutine to listen for init complete or timer, whichever comes first.
CoroutineScope(Dispatchers.Main).launch {
// Wait on the first event.
adLoadChannel.receive()
loadAd()
// Close the channel after receiving the first event.
adLoadChannel.close()
}
}
Supprimer les sources publicitaires en cascade lors de votre première demande
Pour diffuser des annonces sans latence supplémentaire provenant des sources publicitaires en cascade, implémentez la segmentation par clé-valeur afin de supprimer les sources publicitaires en cascade de votre première demande d'annonce. Procédez comme suit :
- Créez un groupe de médiation et ajoutez des sources d'annonces pour les enchères.
- Ajoutez une segmentation par clé-valeur à votre nouveau groupe de médiation réservé aux enchères en utilisant la clé
latencyet la valeurlow. - Dans l'interface utilisateur, donnez la priorité à votre nouveau groupe de médiation réservé aux enchères par rapport à votre groupe de médiation principal. Pour ajuster l'ordre, modifiez la priorité du groupe de médiation.
Dans votre première demande d'annonce, incluez la paire clé-valeur de ciblage personnalisé :
Kotlin
val request = AdRequest.Builder() .addCustomTargeting("latency", "low") .build()Java
AdRequest request = new AdRequest.Builder() .addCustomTargeting("latency", "low") .build();Testez la configuration de la segmentation clé-valeur pour vérifier que vous ciblez correctement le nouveau groupe de médiation réservé aux enchères.
Améliorer les performances des impressions moins urgentes
Pour améliorer les performances des impressions moins urgentes, comme les annonces qui n'ont pas besoin d'être diffusées dès le lancement de l'application, utilisez le préchargement des annonces avec une demande d'annonce qui ne cible pas le groupe de médiation réservé aux enchères.