Migrer vers le SDK GMA Next-Gen

Cette page explique comment initialiser GMA Next-Gen SDK.

Avant de commencer

Ce guide est destiné aux éditeurs et aux plates-formes tierces qui intègrent GMA Next-Gen SDK directement.

Si vous effectuez l'intégration via une plate-forme de médiation tierce, vérifiez auprès de votre partenaire de médiation s'il est compatible avec GMA Next-Gen SDK.

Configurer votre build pour GMA Next-Gen SDK

Les sections suivantes vous expliquent comment configurer GMA Next-Gen SDK.

Inclure la dépendance GMA Next-Gen SDK

GMA Next-Gen SDK nécessite une autre dépendance Gradle. Dans le fichier build au niveau de votre application, supprimez la référence à la dépendance Google Mobile Ads SDK (Legacy) et incluez le nouvel artefact.

Dépendances Gradle
Google Mobile Ads SDK (Legacy)

Kotlin

dependencies {
  // ...
  implementation("com.google.android.gms:play-services-ads:25.5.0")
}

Groovy

dependencies {
  // ...
  implementation 'com.google.android.gms:play-services-ads:25.5.0'
}
GMA Next-Gen SDK

Kotlin

dependencies {
  // ...
  // Comment out/remove play-services-ads.
  // implementation("com.google.android.gms:play-services-ads:25.5.0")
  implementation("com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.4.0")
}

Groovy

dependencies {
  // ...
  // Comment out/remove play-services-ads.
  // implementation 'com.google.android.gms:play-services-ads:25.5.0'
  implementation 'com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.4.0'
}

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 de compilation 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"
}

Définir les niveaux d'API Android minimal et de compilation

GMA Next-Gen SDK nécessite un niveau d'API Android minimal de 24 et un niveau d'API Android de compilation de 34. Ajustez les valeurs minSdk et compileSdk dans le fichier build au niveau de l'application sur 24 ou plus et 34 ou plus, respectivement.

Initialiser GMA Next-Gen SDK

GMA Next-Gen SDK nécessite une initialisation avant le chargement des annonces, contrairement à Google Mobile Ads SDK (Legacy) où l'initialisation est facultative, mais recommandée. Mettez à jour votre code si vous n'initialisiez pas le SDK avant de charger les annonces.

Cette section décrit les différences d'implémentation de l'initialisation du SDK entre Google Mobile Ads SDK (Legacy) et GMA Next-Gen SDK.

Définir l'ID d'application Ad Manager

Les exemples suivants définissent l'ID d'application Ad Manager dans Google Mobile Ads SDK (Legacy) et GMA Next-Gen SDK :

Google Mobile Ads SDK (Legacy)

L'intégration nécessite une balise <meta-data> avec android:name="com.google.android.gms.ads.APPLICATION_ID" contenant votre ID d'application Ad Manager dans le fichier AndroidManifest.xml de votre application.

<manifest>
  <application>
    <!-- Sample Ad Manager app ID: ca-app-pub-3940256099942544~3347511713 -->
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="SAMPLE_APP_ID"/>
  </application>
</manifest>
GMA Next-Gen SDK

Fournissez l'ID de votre application Ad Manager par programmation lors de l'initialisation du SDK.

Kotlin

// Initialize the Google Mobile Ads SDK.
val initConfig = InitializationConfig.Builder("SAMPLE_APP_ID").build()
MobileAds.initialize(this@MainActivity, initConfig) {}

Java

// Initialize GMA Next-Gen SDK.
InitializationConfig initConfig =
    new InitializationConfig.Builder("SAMPLE_APP_ID").build();
MobileAds.initialize(this, initConfig, initializationStatus -> {});

Examiner les modifications d'implémentation

Les exemples suivants initialisent Google Mobile Ads SDK (Legacy) et GMA Next-Gen SDK :

Google Mobile Ads SDK (Legacy)

Appelez MobileAds.initialize() pour initialiser le SDK Google Mobile Ads. Nous vous recommandons d'effectuer l'initialisation sur un thread d'arrière-plan pour réduire les erreurs ANR.

Kotlin

import com.google.android.gms.ads.MobileAds
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 the Google Mobile Ads SDK on a background thread.
      MobileAds.initialize(this@MainActivity) {}
    }
  }
}

Java

import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;

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

    new Thread(
            () -> {
              // Initialize the Google Mobile Ads SDK on a background thread.
              MobileAds.initialize(this, initializationStatus -> {});
            })
        .start();
  }
}
GMA Next-Gen SDK

Appelez MobileAds.initialize() pour initialiser GMA Next-Gen SDK. Cette méthode doit être appelée sur un thread d'arrière-plan. Si ce n'est pas le cas, une erreur "L'application ne répond pas" (ANR) peut se produire.

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,
        // Sample Ad Manager app ID: ca-app-pub-3940256099942544~3347511713
        InitializationConfig.Builder("SAMPLE_APP_ID").build()
      ) {
        // Adapter initialization is complete.
      }
      // SDK initialization is complete. If you don't want to wait for bidding adapters to finish
      // initializing, start loading ads now.
    }
  }
}

Java

import com.google.android.libraries.ads.mobile.sdk.MobileAds;
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,
                  // Sample Ad Manager app ID: ca-app-pub-3940256099942544~3347511713
                  new InitializationConfig.Builder("SAMPLE_APP_ID")
                      .build(),
                  initializationStatus -> {
                    // Adapter initialization is complete.
                  });
              // SDK initialization is complete. If you don't want to wait for bidding adapters to
              // finish initializing, start loading ads now.
            })
        .start();
  }
}