Inicializa el SDK

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

Antes de comenzar

Para usar el SDK de GMA de nueva generación, 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 el SDK de GMA Next Gen.

Configura tu compilación para el SDK de GMA Next Gen

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

Incluye la dependencia del SDK de GMA Next Gen

El SDK de GMA Next Gen 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.7.0")
}

Groovy

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

Kotlin

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

Groovy

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

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, el SDK de GMA de nueva generación 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.all {
    exclude(group = "com.google.android.gms", module = "play-services-ads")
    exclude(group = "com.google.android.gms", module = "play-services-ads-lite")
}

Groovy

configurations {
  all {
    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

El SDK de GMA Next Gen 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 el SDK de GMA Next Gen

El SDK de GMA de nueva generación requiere inicialización antes de cargar anuncios, 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 el SDK actual y el SDK de GMA Next Gen.

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 SDK actual y en el SDK de GMA de nueva generación:

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>
SDK de GMA Next Gen

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 el SDK actual y el SDK de GMA de nueva generación:

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();
  }
}
SDK de GMA Next Gen

Llama a MobileAds.initialize() para inicializar el SDK de GMA Next Gen. Se debe llamar a este método en un subproceso en segundo plano. Si no lo haces, es posible que se produzca 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();
  }
}