Configurer la médiation AdMob

La médiation AdMob est une fonctionnalité qui vous permet de diffuser des annonces dans vos applications à partir de plusieurs sources, y compris le réseau AdMob et des sources d'annonces tierces, de manière centralisée. La médiation AdMob vous aide à maximiser votre taux de remplissage et à augmenter votre monétisation en envoyant des demandes d'annonces à plusieurs réseaux afin de vous assurer de trouver le meilleur réseau disponible pour diffuser des annonces. Étude de cas.

Prérequis

Avant de pouvoir intégrer la médiation pour un format d'annonce, vous devez intégrer ce format d'annonce dans votre application :

Vous découvrez la médiation ? Consultez Présentation de la médiation AdMob.

Initialiser GMA Next-Gen SDK

Le guide de démarrage rapide vous explique comment initialiser le GMA Next-Gen SDK. Lors de cet appel d'initialisation, les adaptateurs de médiation sont également initialisés. Il est important d'attendre la fin de l'initialisation avant de charger des annonces afin de vérifier la participation complète de chaque réseau publicitaire à la première demande d'annonce.

L'exemple de code suivant montre comment vérifier l'état d'initialisation de chaque adaptateur avant d'envoyer une demande d'annonce.

Kotlin

import com.google.android.libraries.ads.mobile.sdk.MobileAds
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

class MainActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val backgroundScope = CoroutineScope(Dispatchers.IO)
    backgroundScope.launch {
      // Initialize GMA Next-Gen SDK on a background thread.
      MobileAds.initialize(this@MainActivity, InitializationConfig.Builder("SAMPLE_APP_ID").build()) {
        initializationStatus ->
        for ((adapterName, adapterStatus) in initializationStatus.adapterStatusMap) {
          Log.d(
            "MyApp",
            String.format(
              "Adapter name: %s, Status code: %s, Status string: %s, Latency: %d",
              adapterName,
              adapterStatus.initializationState,
              adapterStatus.description,
              adapterStatus.latency,
            ),
          )
        }
        // Adapter initialization is complete.
      }
      // Other methods on MobileAds can now be called.
    }
  }
}

Java

import com.google.android.libraries.ads.mobile.sdk.MobileAds;
import com.google.android.libraries.ads.mobile.sdk.initialization.AdapterStatus;
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig;

public class MainActivity extends AppCompatActivity {
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new Thread(
            () -> {
              // Initialize GMA Next-Gen SDK on a background thread.
              MobileAds.initialize(
                  this,
                  new InitializationConfig.Builder("SAMPLE_APP_ID")
                      .build(),
                  initializationStatus -> {
                    Map<String, AdapterStatus> adapterStatusMap =
                        initializationStatus.getAdapterStatusMap();
                    for (String adapterClass : adapterStatusMap.keySet()) {
                      AdapterStatus adapterStatus = adapterStatusMap.get(adapterClass);
                      Log.d(
                          "MyApp",
                          String.format(
                              "Adapter name: %s, Status code: %s, Status description: %s,"
                                  + " Latency: %d",
                              adapterClass,
                              adapterStatus.getInitializationState(),
                              adapterStatus.getDescription(),
                              adapterStatus.getLatency()));
                    }
                    // Adapter initialization is complete.
                  });
              // Other methods on MobileAds can now be called.
            })
        .start();
  }
}

Exclure les modules com.google.android.gms dans les intégrations de médiation

Les adaptateurs de médiation continuent de dépendre de Google Mobile Ads SDK (Legacy). Toutefois, GMA Next-Gen SDK inclut toutes les classes requises par les adaptateurs de médiation. Pour éviter les erreurs de compilation liées aux symboles en double, vous devez exclure Google Mobile Ads SDK (Legacy) de l'extraction en tant que dépendance par les adaptateurs de médiation.

Dans le fichier build.gradle au niveau de l'application, excluez globalement les modules play-services-ads et play-services-ads-lite de toutes les dépendances :

Kotlin

configurations.configureEach {
    exclude(group = "com.google.android.gms", module = "play-services-ads")
    exclude(group = "com.google.android.gms", module = "play-services-ads-lite")
}

Groovy

configurations.configureEach {
    exclude group: "com.google.android.gms", module: "play-services-ads"
    exclude group: "com.google.android.gms", module: "play-services-ads-lite"
}

Vérifier quelle classe d'adaptateur de réseau publicitaire a chargé l'annonce

Voici un exemple de code qui consigne le nom de la classe du réseau publicitaire pour une bannière :

Kotlin

BannerAd.load(
  BannerAdRequest.Builder("AD_UNIT_ID", AdSize.BANNER).build(),
  object : AdLoadCallback<BannerAd> {
    override fun onAdLoaded(ad: BannerAd) {
      Log.d(
        "MyApp", "Adapter class name: " +
          ad.getResponseInfo().mediationAdapterClassName
      )
    }
  }
)

Java

BannerAd.load(
  new BannerAdRequest.Builder("AD_UNIT_ID", AdSize.BANNER).build(),
  new AdLoadCallback<BannerAd>() {
    @Override
    public void onAdLoaded(@NonNull BannerAd ad) {
      Log.d("MyApp",
          "Adapter class name: " + ad.getResponseInfo().getMediationAdapterClassName());
    }
  }
);

Veillez à désactiver l'actualisation dans toutes les interfaces utilisateur des sources d'annonces tierces pour les blocs d'annonces de type bannière utilisés dans la médiation AdMob. Cela évite une double actualisation, car AdMob déclenche également une actualisation en fonction de la fréquence d'actualisation de votre bloc d'annonces de bannières.

Lois sur la confidentialité des États américains et RGPD

Si vous devez respecter les lois sur la confidentialité dans les États américains ou le Règlement général sur la protection des données (RGPD), suivez la procédure décrite dans Paramètres des réglementations des États américains ou Paramètres du RGPD pour ajouter vos partenaires de médiation à la liste des partenaires publicitaires pour les États américains ou le RGPD dans la section "Confidentialité et messages" d'AdMob. Sinon, les partenaires risquent de ne pas pouvoir diffuser d'annonces dans votre application.

Découvrez comment activer le traitement restreint des données (TRD) et obtenir le consentement RGPD avec le SDK Google User Messaging Platform (UMP).