Anuncios nativos

Selecciona la plataforma: Android iOS Flutter Unity

Los anuncios nativos constan de recursos que se presentan a los usuarios a través de componentes de IU que son nativos de la plataforma. Se muestran con los mismos tipos de vistas que ya utilizas para crear tus diseños y se pueden adaptar con un formato que coincida con el diseño visual de tu app.

Cuando se carga un anuncio nativo, tu app recibe un objeto de anuncio que contiene sus recursos, y la responsabilidad de mostrarlos recae en la app (no en el SDK de anuncios de Google para dispositivos móviles).

En términos generales, la implementación correcta de los anuncios nativos se divide en dos partes: cargar un anuncio con el SDK y, luego, mostrar el contenido del anuncio en tu app.

En esta página, puedes ver cómo usar el SDK para cargar anuncios nativos. Sugerencia: Lee nuestra Guía de anuncios nativos para obtener más información al respecto.

También puedes consultar algunas historias de éxito de clientes: caso de éxito 1 y caso de éxito 2.

Requisitos previos

Haz siempre una comprobación con anuncios de prueba

Al compilar y verificar tus apps, asegúrate de usar anuncios de prueba en vez de anuncios activos en fase de producción.

La forma más sencilla de cargar anuncios de prueba es usar nuestro ID de unidad de anuncios de prueba exclusivo para los anuncios nativos en Android:

ca-app-pub-3940256099942544/2247696110

Está configurado especialmente para devolver anuncios de prueba en cada solicitud, y puedes usarlo en tus propias apps mientras realizas tus actividades de programación, prueba y depuración. Solo asegúrate de reemplazarlo por tu propio ID de unidad de anuncios antes de publicar tu app.

Para obtener más información sobre el funcionamiento de los anuncios de prueba del SDK de anuncios de Google para dispositivos móviles, consulta la sección sobre anuncios de prueba.

Carga anuncios

Los anuncios nativos se cargan con la clase AdLoader, que tiene su propia clase Builder para personalizarla durante su creación. Cuando se agregan objetos de escucha a AdLoader durante la compilación, la app especifica qué tipos de anuncios nativos está lista para recibir. De esta manera, AdLoader solo solicita esos tipos de anuncios.

Compila una clase AdLoader

El siguiente código muestra cómo compilar una clase AdLoader que pueda cargar anuncios nativos:

Java

// It is recommended to call AdLoader.Builder on a background thread.
new Thread(
        () -> {
          AdLoader adLoader =
              new AdLoader.Builder(context, "AD_UNIT_ID")
                  .forNativeAd(
                      new NativeAd.OnNativeAdLoadedListener() {
                        @Override
                        // The native ad loaded successfully. You can show the ad.
                        public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {}
                      })
                  .withAdListener(
                      new AdListener() {
                        @Override
                        // The native ad load failed. Check the adError message for failure
                        // reasons.
                        public void onAdFailedToLoad(@NonNull LoadAdError adError) {}
                      })
                  // Use the NativeAdOptions.Builder class to specify individual options
                  // settings.
                  .withNativeAdOptions(new NativeAdOptions.Builder().build())
                  .build();
        })
    .start();

Kotlin

// It is recommended to call AdLoader.Builder on a background thread.
CoroutineScope(Dispatchers.IO).launch {
  val adLoader =
    AdLoader.Builder(context, "AD_UNIT_ID")
      .forNativeAd { nativeAd ->
        // The native ad loaded successfully. You can show the ad.
      }
      .withAdListener(
        object : AdListener() {
          override fun onAdFailedToLoad(adError: LoadAdError) {
            // The native ad load failed. Check the adError message for failure reasons.
          }
        }
      )
      // Use the NativeAdOptions.Builder class to specify individual options settings.
      .withNativeAdOptions(NativeAdOptions.Builder().build())
      .build()
}

Reemplaza AD_UNIT_ID por tu ID de dispositivo de prueba.

El método forNativeAd() se encarga de preparar la clase AdLoader para el formato NativeAd. Cuando un anuncio se carga correctamente, se llama al método onNativeAdLoaded() del objeto de escucha.

Configura una clase AdListener con la clase AdLoader (opcional)

Cuando se crea la clase AdLoader, la función withAdListener establece una clase AdListener para el cargador. El método toma una clase AdListener como su único parámetro, que recibe devoluciones de llamada de la clase AdLoader cuando se producen eventos de ciclo de vida del anuncio:

Java

adLoaderBuilder.withAdListener(
    // Override AdListener callbacks here.
    new AdListener() {});

Kotlin

adLoaderBuilder.withAdListener(
  // Override AdListener callbacks here.
  object : AdListener() {}
)

Solicita anuncios

Una vez que hayas terminado de compilar una clase AdLoader, será el momento de usarla para solicitar anuncios. Para hacerlo, tienes dos métodos disponibles: loadAd() y loadAds().

loadAd()

Este método envía una solicitud para un solo anuncio.

Java

adLoader.loadAd(new AdRequest.Builder().build());

Kotlin

adLoader.loadAd(AdRequest.Builder().build())

loadAds()

Este método envía una solicitud para varios anuncios (hasta cinco):

Java

// Load three native ads.
adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

// Load three native ads.
adLoader.loadAds(AdRequest.Builder().build(), 3)

Ambos métodos toman un objeto AdRequest como su primer parámetro. Esta es la misma clase AdRequest que usan los banners y los anuncios intersticiales, y puedes usar métodos de la clase AdRequest para agregar la información de segmentación, tal como lo harías con otros formatos de anuncios.

Carga varios anuncios (opcional)

El método loadAds() toma un parámetro adicional: la cantidad de anuncios que el SDK debería intentar cargar para la solicitud. Esa cantidad tiene un límite de cinco, y no se garantiza que el SDK devuelva la cantidad exacta de anuncios solicitados.

Todos los anuncios de Google que se devuelvan serán diferentes entre sí. Además, no se garantiza que los anuncios procedentes del inventario reservado o de compradores externos sean únicos.

No ejecutes el método loadAds() si utilizas la mediación, ya que las solicitudes de varios anuncios nativos no funcionan para los IDs de unidades de anuncios que se configuraron para la mediación.

Devoluciones de llamada

Después de una llamada a loadAd(), se realiza una sola devolución de llamada a los métodos del objeto de escucha definidos anteriormente para publicar el objeto de anuncio nativo o informar un error.

Después de una llamada a loadAds(), se realizan varias devoluciones de llamada de ese tipo (al menos una y no más que la cantidad de anuncios solicitados). Las apps que solicitan varios anuncios deberían llamar a AdLoader.isLoading() en sus implementaciones de devoluciones de llamada para determinar si finalizó el proceso de carga.

El siguiente ejemplo muestra cómo verificar isLoading() en la devolución de llamada onNativeAdLoaded():

Java

adLoaderBuilder
    .forNativeAd(
        nativeAd -> {
          // This callback is invoked when a native ad is successfully loaded.
        })
    .build();

Kotlin

adLoaderBuilder
  .forNativeAd { nativeAd ->
    // This callback is invoked when a native ad is successfully loaded.
  }
  .build()

Libera recursos

Asegúrate de usar el método destroy() para los anuncios nativos cargados. Ese método libera los recursos utilizados y evita las fugas de memoria.

Verifica que todas las referencias de NativeAd se destruyan en el método onDestroy() de tu actividad.

En tu devolución de llamada onNativeAdLoaded, asegúrate de destruir los anuncios nativos existentes que se vayan a desreferenciar.

Otra verificación clave es confirmar si se destruyó la actividad y, de ser así, llamar a destroy() para el anuncio devuelto y salir inmediatamente:

Java

nativeAd.destroy();

Kotlin

nativeAd.destroy()

Prácticas recomendadas

Sigue estas reglas para cargar anuncios.

  • Las apps que usan anuncios nativos incluidos en una lista deberían almacenar previamente en caché la lista de anuncios.

  • Cuando utilices el almacenamiento previo en caché para los anuncios, borra la caché y vuelve a cargarla después de una hora.

  • No llames a loadAd() ni loadAds() en una clase AdLoader hasta que termine de cargarse la primera solicitud.
  • Limita el almacenamiento en caché de los anuncios nativos solo a los que sean necesarios. Por ejemplo, utiliza el almacenamiento previo en caché solo para los anuncios que estén visibles en la pantalla de inmediato. Los anuncios nativos ocupan mucho espacio en memoria, por lo que almacenarlos en caché sin destruirlos genera un uso de memoria excesivo.

  • Destruye los anuncios nativos cuando ya no estén en uso.

Aceleración de hardware para los anuncios de video

Para que los anuncios de video se muestren correctamente en las vistas de anuncios nativos, la aceleración de hardware tiene que estar habilitada.

La aceleración de hardware está habilitada de forma predeterminada, pero es posible que algunas apps opten por inhabilitarla. Si esto se aplica a tu app, te recomendamos que habilites la aceleración de hardware para las clases Activity que utilizan anuncios.

Habilitación de la aceleración de hardware

Si tu app no funciona de manera adecuada con la aceleración de hardware activada a nivel global, también puedes controlarla para actividades individuales. Para habilitar o inhabilitar la aceleración de hardware, usa el atributo android:hardwareAccelerated para los elementos <application> y <activity> en tu archivo AndroidManifest.xml. En el siguiente ejemplo, se habilita la aceleración de hardware para la app en su totalidad, pero se inhabilita para una actividad:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

Consulta la guía Aceleración de HW para obtener más información sobre las opciones que permiten controlar su funcionamiento. Ten en cuenta que las vistas de anuncios individuales no se pueden habilitar para la aceleración de hardware si la clase Activity está inhabilitada; por lo tanto, esa clase en sí debe tener habilitada la aceleración de hardware.

Muestra tu anuncio

Una vez que hayas cargado un anuncio, solo tendrás que mostrarlo a los usuarios. Visita nuestra guía de nativos avanzados para saber cómo hacerlo.