Inicializa el SDK

En esta página, se incluyen las instrucciones para inicializar GMA Next-Gen SDK.

Antes de comenzar

Para usar GMA Next-Gen SDK, debes realizar la integración sin mediación o usar AdMob como plataforma de mediación. Las otras plataformas de mediación no son compatibles con GMA Next-Gen SDK.

Configura tu compilación para GMA Next-Gen SDK

En las siguientes secciones, se muestran los pasos necesarios para configurar GMA Next-Gen SDK.

Incluye la dependencia de GMA Next-Gen SDK

GMA Next-Gen SDK requiere una dependencia de Gradle diferente. En el archivo de compilación a nivel de la app, quita la referencia a la dependencia actual del SDK de anuncios para dispositivos móviles y, luego, incluye el nuevo artefacto.

Dependencias de Gradle
Actual

Kotlin

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

Groovy

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

Kotlin

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

Groovy

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

Excluye los módulos de com.google.android.gms en las integraciones de mediación

Los adaptadores de mediación siguen dependiendo del SDK de anuncios para dispositivos móviles actual. Sin embargo, GMA Next-Gen SDK incluye todas las clases que requieren los adaptadores de mediación. Para evitar errores de compilación relacionados con símbolos duplicados, debes excluir el SDK de anuncios para dispositivos móviles actual para que los adaptadores de mediación no lo extraigan como dependencia.

En el archivo de compilación a nivel de la app, excluye los módulos play-services-ads y play-services-ads-lite de forma global de todas las dependencias.

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

Cómo configurar los niveles de API de Android mínimos y de compilación

GMA Next-Gen SDK requiere un nivel de API de Android mínimo de 24 y un nivel de API de Android de compilación de 34. Ajusta los valores de minSdk y compileSdk en el archivo de compilación a nivel de la app a 24 o más y 34 o más, respectivamente.

Inicializa GMA Next-Gen SDK

GMA Next-Gen SDK requiere inicialización antes de cargar anuncios, lo que representa un cambio con respecto al SDK de anuncios para dispositivos móviles actual, en el que la inicialización es opcional, pero recomendada. Actualiza tu código si no inicializabas el SDK antes de cargar anuncios.

En esta sección, se explican las diferencias en la implementación de la inicialización del SDK entre la versión actual y GMA Next-Gen SDK.

Cómo establecer el ID de la aplicación de AdMob

En los siguientes ejemplos, se establece el ID de la app de AdMob en el GMA Next-Gen SDK y el actual:

Actual

La integración requiere una etiqueta <meta-data> con android:name="com.google.android.gms.ads.APPLICATION_ID" que contenga el ID de tu aplicación de AdMob en el archivo AndroidManifest.xml de tu aplicación.

<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

Proporciona tu ID de aplicación de AdMob de forma programática como parte de la inicialización del 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 -> {});

Revisa los cambios en la implementación

En los siguientes ejemplos, se inicializan los parámetros GMA Next-Gen SDK y el actual:

Actual

Llama a MobileAds.initialize() para inicializar el SDK de anuncios de Google para dispositivos móviles. Se recomienda la inicialización en un subproceso en segundo plano para reducir los errores 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

Llama a MobileAds.initialize() para inicializar GMA Next-Gen SDK. Se debe llamar a este método en un subproceso en segundo plano. Si no se hace, se puede producir un error de "Aplicación no responde" (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 AdMob app ID: ca-app-pub-3940256099942544~3347511713
        InitializationConfig.Builder("SAMPLE_APP_ID").build()
      ) {
        // 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.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.
                  });
              // Other methods on MobileAds can now be called.
            })
        .start();
  }
}