Anuncios nativos

Los anuncios nativos son recursos del anuncio 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 [beta]).

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, se explica 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.

Las muestras están disponibles para Java y Kotlin.

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

Requisitos previos

  • Completar la Guía de introducción
  • SDK de anuncios de Google para dispositivos móviles (beta) 0.6.0-alpha01 o una versión posterior

Siempre haz pruebas 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. De lo contrario, podría suspenderse tu cuenta.

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:

Formato del anuncio ID de unidad de anuncios de muestra
Nativo ca-app-pub-3940256099942544/2247696110
Anuncio de video nativo ca-app-pub-3940256099942544/1044960115

Carga un anuncio

Para cargar un anuncio nativo, llama al método NativeAdLoader.load(), que utiliza NativeAdRequest y NativeAdLoaderCallback.

import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAd
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoader
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoaderCallback
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdRequest

class NativeFragment : Fragment() {

  private var nativeAd: NativeAd? = null

  override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    loadAd()
  }

  private fun loadAd() {
    // Build an ad request with native ad options to customize the ad.
    val adRequest = NativeAdRequest
      .Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.NATIVE))
      .build()

    val adCallback =
      object : NativeAdLoaderCallback {
        override fun onNativeAdLoaded(nativeAd: NativeAd) {
          // Called when a native ad has loaded.
        }
        override fun onAdFailedToLoad(adError: LoadAdError) {
          // Called when a native ad has failed to load.
        }
      }

    // Load the native ad with our request and callback.
    NativeAdLoader.load(adRequest, adCallback)
  }

  companion object {
    // Sample native ad unit ID.
    const val AD_UNIT_ID = "ca-app-pub-3940256099942544/2247696110"
  }
}

Configura la devolución de llamada del evento de anuncio nativo

Al controlar onNativeAdLoaded, configura el NativeAd recibido con NativeAdEventCallback para definir funciones que permitan recibir eventos de ciclo de vida del anuncio nativo:

  nativeAd.adEventCallback =
    object : NativeAdEventCallback {
      override fun onAdShowedFullScreenContent() {
        // Native ad showed full screen content.
      }
      override fun onAdDismissedFullScreenContent() {
        // Native ad dismissed full screen content.
      }
      override fun onAdFailedToShowFullScreenContent {
        // Native ad failed to show full screen content.
      }
      override fun onAdImpression() {
        // Native ad recorded an impression.
      }
      override fun onAdClicked() {
        // Native ad recorded a click.
      }
    }

[Opcional] Carga varios anuncios

Para cargar varios anuncios, llama a load() con el parámetro opcional numberOfAds. El valor máximo que puedes establecer es 5, que representa la cantidad de anuncios. Es posible que el SDK de anuncios de Google para dispositivos móviles (beta) no devuelva la cantidad exacta de anuncios que solicitaste.

private fun loadAd() {
  // Build an ad request with native ad options to customize the ad.
  val adRequest = NativeAdRequest
    .Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.NATIVE))
    .build()

  val adCallback =
    object : NativeAdLoaderCallback {
      override fun onNativeAdLoaded(nativeAd: NativeAd) {
        // Called when a native ad has loaded.
      }
      override fun onAdFailedToLoad(adError: LoadAdError) {
        // Called when a native ad has failed to load.
      }
      override fun onAdLoadingCompleted() {
        // Called when all native ads have loaded.
      }
    }

  // Load the native ad with our request and callback.
  NativeAdLoader.load(adRequest, 3, adCallback)
}

Los anuncios que devuelve el SDK de anuncios de Google para dispositivos móviles (beta) son únicos, aunque es posible que no lo sean los anuncios del inventario reservado o de los compradores externos.

Si usas la mediación, no llames al método load(). Las solicitudes de varios anuncios nativos no funcionan para los IDs de unidades de anuncios configurados para la mediación.

Prácticas recomendadas

Sigue estas reglas cuando cargues anuncios.

  • Las apps que usan anuncios nativos 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.

  • Limita el almacenamiento en caché de los anuncios nativos solo a los que sean necesarios. Por ejemplo, cuando se usa el almacenamiento previo en caché, solo se almacenan en caché los anuncios que estén inmediatamente visibles en la pantalla. 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.

Cómo habilitar 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 mostrárselo a los usuarios. Consulta nuestra guía de anuncios nativos avanzados para ver cómo hacerlo.

Ejemplo

Descarga y ejecuta la app de ejemplo que demuestra el uso del SDK de anuncios de Google para dispositivos móviles (beta).