Migrar para o SDK do GMA Next-Gen

Esta página aborda as instruções para inicializar GMA Next-Gen SDK.

Antes de começar

Este guia é destinado a publishers e plataformas de terceiros que integram GMA Next-Gen SDK diretamente.

Se você se conectar à AdMob por uma plataforma de mediação de terceiros que oferece suporte a lances de parceiros, consulte a tabela a seguir para confirmar a compatibilidade da plataforma com GMA Next-Gen SDK.

Plataforma de mediação Compatível com GMA Next-Gen SDK
AdMost
AppLovin MAX
Mediação da Chartboost
DT Fairbid
Gravite
Nimbus
TopOn
TradPlus VisiM
Unity LevelPlay

Se você quiser usar uma plataforma de mediação que não seja compatível com GMA Next-Gen SDK, entre em contato com a plataforma de mediação para solicitar suporte.

Configurar o build para GMA Next-Gen SDK

As seções a seguir mostram as etapas necessárias para configurar GMA Next-Gen SDK.

Incluir a dependência GMA Next-Gen SDK

O GMA Next-Gen SDK requer uma dependência diferente do Gradle. No arquivo de build no nível do app, remova a referência à Google Mobile Ads SDK (Legacy) dependência e inclua o novo artefato.

Dependências do 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.5.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.5.0'
}

Excluir módulos com.google.android.gms em integrações de mediação

Os adaptadores de mediação continuam dependendo de Google Mobile Ads SDK (Legacy). No entanto, GMA Next-Gen SDK inclui todas as classes exigidas pelos adaptadores de mediação. Para evitar erros de compilação relacionados a símbolos duplicados, é necessário excluir Google Mobile Ads SDK (Legacy) de ser extraído como uma dependência por mediação adaptadores.

No arquivo de build no nível do app, exclua os módulos play-services-ads e play-services-ads-lite globalmente de todas as dependências.

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

Definir os níveis mínimos e de compilação do nível da API do Android

GMA Next-Gen SDK requer um nível mínimo da API do Android de 24 e um nível de compilação da API do Android de 34. Ajuste os valores minSdk e compileSdk no arquivo de build no nível do app para 24 ou mais e 34 ou mais, respectivamente.

Inicializar GMA Next-Gen SDK

GMA Next-Gen SDK requer inicialização antes de carregar anúncios, uma mudança de Google Mobile Ads SDK (Legacy) em que a inicialização é opcional, mas recomendada. Atualize seu código se você não estava inicializando o SDK antes de carregar anúncios.

Esta seção aborda as diferenças na implementação da inicialização do SDK entre Google Mobile Ads SDK (Legacy) e GMA Next-Gen SDK.

Definir o ID do app da AdMob

Os exemplos a seguir definem o ID do app da AdMob em Google Mobile Ads SDK (Legacy) e GMA Next-Gen SDK:

Google Mobile Ads SDK (Legacy)

A integração requer uma tag <meta-data> com android:name="com.google.android.gms.ads.APPLICATION_ID" contendo o ID do app da AdMob no arquivo AndroidManifest.xml do app.

<manifest>
  <application>
    <!-- Sample AdMob 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

Forneça o ID do app da AdMob de maneira programática como parte da inicialização do 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 -> {});

Analisar as mudanças de implementação

Os exemplos a seguir inicializam Google Mobile Ads SDK (Legacy) e GMA Next-Gen SDK:

Google Mobile Ads SDK (Legacy)

Chame MobileAds.initialize() para inicializar o SDK dos anúncios para dispositivos móveis do Google. A inicialização em uma linha de execução em segundo plano é recomendada para reduzir ANRs.

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

Chame MobileAds.initialize() para inicializar GMA Next-Gen SDK. Isso precisa ser chamado em uma linha de execução em segundo plano. Caso contrário, um erro "O app não está respondendo" (ANR) poderá ocorrer.

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