Esegui la migrazione all'SDK GMA Next-Gen

Questa pagina illustra le istruzioni per inizializzare GMA Next-Gen SDK.

Prima di iniziare

Per utilizzare GMA Next-Gen SDK, devi eseguire l'integrazione senza mediazione o utilizzare Ad Manager come piattaforma di mediazione. Le altre piattaforme di mediazione non sono compatibili con GMA Next-Gen SDK.

Configurare la build per GMA Next-Gen SDK

Le sezioni seguenti mostrano i passaggi necessari per configurare GMA Next-Gen SDK.

Includere la dipendenza GMA Next-Gen SDK

Il GMA Next-Gen SDK richiede una dipendenza Gradle diversa. Nel file di build a livello di app, rimuovi il riferimento alla dipendenzaGoogle Mobile Ads SDK (Legacy)e includi il nuovo artefatto.

Dipendenze Gradle
Google Mobile Ads SDK (Legacy)

Kotlin

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

Groovy

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

Kotlin

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

Groovy

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

Escludere i moduli com.google.android.gms nelle integrazioni di mediazione

Gli adattatori di mediazione continuano a dipendere da Google Mobile Ads SDK (Legacy). Tuttavia, GMA Next-Gen SDK include tutte le classi richieste dagli adattatori di mediazione. Per evitare errori di compilazione correlati a simboli duplicati, devi impedire che Google Mobile Ads SDK (Legacy) venga estratto come dipendenza dagli adattatori di mediazione.

Nel file di build a livello di app, escludi i moduli play-services-ads e play-services-ads-lite a livello globale da tutte le dipendenze.

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

Impostare i livelli API Android minimo e di compilazione

GMA Next-Gen SDK richiede un livello API Android minimo di 24 e un livello API Android di compilazione di 34. Modifica i valori minSdk e compileSdk nel file di build a livello di app impostandoli rispettivamente su 24 o superiore e 34 o superiore.

Inizializza GMA Next-Gen SDK

GMA Next-Gen SDK richiede l'inizializzazione prima del caricamento degli annunci, a differenza di Google Mobile Ads SDK (Legacy) in cui l'inizializzazione è facoltativa ma consigliata. Aggiorna il codice se in precedenza non inizializzavi l'SDK prima di caricare gli annunci.

Questa sezione illustra le differenze nell'implementazione dell'inizializzazione dell'SDK tra Google Mobile Ads SDK (Legacy) e GMA Next-Gen SDK.

Impostare l'ID app Ad Manager

Gli esempi seguenti impostano l' ID app Ad Manager in Google Mobile Ads SDK (Legacy) e GMA Next-Gen SDK:

Google Mobile Ads SDK (Legacy)

L'integrazione richiede un tag <meta-data> con android:name="com.google.android.gms.ads.APPLICATION_ID" contenente l'ID app Ad Manager nel file AndroidManifest.xml dell'app.

<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

Fornisci l'ID app Ad Manager a livello di programmazione come parte dell'inizializzazione dell'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 -> {});

Esaminare le modifiche all'implementazione

Gli esempi seguenti inizializzano Google Mobile Ads SDK (Legacy) e GMA Next-Gen SDK:

Google Mobile Ads SDK (Legacy)

Chiama MobileAds.initialize() per inizializzare l'SDK Google Mobile Ads. Per ridurre gli ANR, è consigliabile eseguire l'inizializzazione su un thread in background.

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

Chiama MobileAds.initialize() per inizializzare GMA Next-Gen SDK. Questa chiamata deve essere eseguita su un thread in background, altrimenti potrebbe verificarsi un errore "L'applicazione non risponde" (ANR).

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