Opciones de anuncios nativos

Selecciona la plataforma: Android iOS

Los anuncios nativos tienen muchas funciones avanzadas que te permiten realizar personalizaciones adicionales y crear la mejor experiencia de anuncios posible. En esta guía, te mostramos cómo usar las funciones avanzadas de los anuncios nativos.

Requisitos previos

Controles de recursos

Configura los controles de recursos de anuncios nativos.

Controles preferidos de relación de aspecto de medios

Los controles de relación de aspecto de medios te permiten especificar la relación de aspecto que prefieres aplicar a las creatividades de anuncios.

Llama a NativeAdOptions.Builder.setMediaAspectRatio() con un valor de NativeAdOptions.MediaAspectRatio.

  • Si no se establece esta configuración, los anuncios devueltos pueden tener cualquier relación de aspecto de medios.

  • Cuando se establece esta configuración, puedes mejorar la experiencia del usuario especificando el tipo de relación de aspecto de preferencia.

En el siguiente ejemplo, se le indica al SDK que prefiera la devolución de una imagen o un video con una relación de aspecto específica.

Java

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder()
        .setMediaAspectRatio(NativeAdOptions.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
        .build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build();

Kotlin

val nativeAdOptions =
  NativeAdOptions.Builder()
    .setMediaAspectRatio(NativeAdOptions.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
    .build()

val loader = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build()

Reemplaza AD_UNIT_ID por tu ID de unidad de anuncios.

Control de descarga de imágenes

El control de descarga de imágenes te permite decidir si el SDK devolverá recursos de imagen o solo URIs.

Llama a NativeAdOptions.Builder.setReturnUrlsForImageAssets() con un valor de boolean.

  • El control de descarga de imágenes está inhabilitado de forma predeterminada.

  • Cuando está inhabilitado, el SDK de anuncios de Google para dispositivos móviles propaga la imagen y el URI por ti.

  • Cuando está habilitado, en cambio, el SDK propaga solo el URI, lo que te permite descargar las imágenes reales a tu discreción.

En el siguiente ejemplo, se le indica al SDK que muestre solamente el URI.

Java

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder().setReturnUrlsForImageAssets(true).build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID")
        .withNativeAdOptions(nativeAdOptions)
        .forNativeAd(
            nativeAd -> {
              List<Uri> imageUris = new ArrayList<>();
              for (Image image : nativeAd.getImages()) {
                imageUris.add(image.getUri());
              }
            })
        .build();

Kotlin

val nativeAdOptions = NativeAdOptions.Builder().setReturnUrlsForImageAssets(true).build()

val loader =
  AdLoader.Builder(context, "AD_UNIT_ID")
    .withNativeAdOptions(nativeAdOptions)
    .forNativeAd { nativeAd ->
      val imageUris = nativeAd.images.mapNotNull { it.uri }
    }
    .build()

Controles de carga útil de imágenes

Algunos anuncios incluyen varias imágenes en lugar de una sola. Usa esta función para indicar si tu app está preparada para mostrar todas las imágenes o solo una.

Llama a NativeAdOptions.Builder.setRequestMultipleImages() con un valor de boolean.

  • Los controles de carga útil de imágenes están inhabilitados de forma predeterminada.

  • Cuando se habilitan, tu app le indica al SDK que proporcione solo la primera imagen de los recursos que contengan varias.

  • Cuando se inhabilitan, tu app le indica al SDK que está preparada para mostrar todas las imágenes de los recursos que tienen más de una.

En el siguiente ejemplo, se indica al SDK que devuelva varios recursos de imagen.

Java

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder().setRequestMultipleImages(true).build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build();

Kotlin

val nativeAdOptions = NativeAdOptions.Builder().setRequestMultipleImages(true).build()

val loader = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build()

Posiciones de AdChoices

Personaliza la visualización del ícono de AdChoices.

Controles de posición de AdChoices

Los controles de posición de AdChoices te permiten elegir en qué esquina renderizar el ícono de AdChoices.

Llama a NativeAdOptions.Builder.setAdChoicesPlacement() con un valor de NativeAdOption.AdChoicesPlacement.

  • Si no se establece este parámetro de configuración, el ícono de AdChoices se coloca en la parte superior derecha.

  • Si se establece, el ícono de AdChoices se coloca en la posición solicitada.

En el siguiente ejemplo, se muestra cómo establecer una posición personalizada para la imagen de AdChoices.

Java

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder()
        .setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
        .build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build();

Kotlin

val nativeAdOptions =
  NativeAdOptions.Builder()
    .setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
    .build()

val loader = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build()

Vista personalizada de AdChoices

La función de vista personalizada de AdChoices te permite colocar el ícono de AdChoices en una ubicación personalizada. Esto es diferente de los controles de posición de AdChoices, que solo permiten especificar una de las cuatro esquinas.

Llama a NativeAdView.setAdChoicesView() con un valor de AdChoicesView.

En el siguiente ejemplo, se muestra cómo establecer una vista personalizada de AdChoices, con el ícono de AdChoices renderizado dentro de AdChoicesView.

Java

NativeAdView nativeAdView = new NativeAdView(context);
AdChoicesView adChoicesView = new AdChoicesView(context);
nativeAdView.setAdChoicesView(adChoicesView);

Kotlin

val nativeAdView = NativeAdView(context)
val adChoicesView = AdChoicesView(context)
nativeAdView.adChoicesView = adChoicesView

Controles de video

Configura el comportamiento de los recursos de video.

Comportamiento de inicio en silencio

El comportamiento de inicio en silencio te permite inhabilitar o habilitar el audio de inicio de un video.

Llama a VideoOptions.Builder.setStartMuted() con un valor de boolean.

  • El comportamiento de inicio en silencio se encuentra habilitado de forma predeterminada.

  • Cuando se inhabilita, tu app solicita que el video comience con audio.

  • Cuando se habilita, tu app solicita que el video comience en silencio.

En el siguiente ejemplo, se muestra cómo iniciar el video con el audio activado.

Java

VideoOptions videoOptions = new VideoOptions.Builder().setStartMuted(false).build();

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder().setVideoOptions(videoOptions).build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build();

Kotlin

val videoOptions = VideoOptions.Builder().setStartMuted(false).build()

val nativeAdOptions = NativeAdOptions.Builder().setVideoOptions(videoOptions).build()

val loader = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build()

Controles de reproducción personalizados

Estos controles te permiten solicitar controles de entrada de video personalizados para reproducir, pausar o silenciar el video.

Llama a VideoOptions.Builder.setCustomControlsRequested() con un valor de boolean.

  • Los controles de reproducción personalizados están inhabilitados de forma predeterminada.

  • Cuando se inhabilitan, en el video se muestran los controles de entrada renderizados por el SDK.

Si el anuncio tiene contenido de video y los controles personalizados están habilitados, debes mostrar tus controles personalizados con el anuncio, ya que este no mostrará ningún control por sí mismo. Luego, los controles pueden llamar a los métodos pertinentes en el objeto

VideoController.

En el siguiente ejemplo, se muestra cómo solicitar un video con controles de reproducción personalizados.

Java

VideoOptions videoOptions = new VideoOptions.Builder().setCustomControlsRequested(true).build();

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder().setVideoOptions(videoOptions).build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build();

Kotlin

val videoOptions = VideoOptions.Builder().setCustomControlsRequested(true).build()

val nativeAdOptions = NativeAdOptions.Builder().setVideoOptions(videoOptions).build()

val loader = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build()

Verifica si los controles personalizados están habilitados

Dado que no se sabe en el momento de la solicitud si el anuncio que se mostrará permitirá los controles de video personalizados, debes verificar si estos se encuentran habilitados.

Java

MediaContent mediaContent = nativeAd.getMediaContent();
if (mediaContent != null) {
  VideoController videoController = mediaContent.getVideoController();
  boolean canShowCustomControls = videoController.isCustomControlsEnabled();
}

Kotlin

val mediaContent = nativeAd.mediaContent
if (mediaContent != null) {
  val videoController = mediaContent.videoController
  val canShowCustomControls = videoController.isCustomControlsEnabled
}

Renderiza controles de video personalizados

Para renderizar los controles de video personalizados, ten en cuenta las siguientes prácticas recomendadas:

  1. Renderiza la vista de controles personalizados como secundaria con respecto a la vista del anuncio nativo. Este enfoque permite que los cálculos de visibilidad de medición abierta consideren los controles personalizados como una obstrucción aceptable.
  2. Evita renderizar una superposición invisible sobre toda la vista multimedia. Las superposiciones bloquean los clics en la vista multimedia, lo que afecta negativamente el rendimiento de los anuncios nativos. En su lugar, crea una pequeña superposición que sea lo suficientemente grande como para que quepan los controles.

Gestos de clic personalizados:

Los gestos de clic personalizados son una función de los anuncios nativos que permite registrar los deslizamientos en las vistas de anuncios como clics en el anuncio. Esta función está diseñada para implementarse en apps que usan gestos de deslizamiento para navegar por el contenido. En esta guía, te mostraremos cómo habilitar los gestos de clic personalizados en tus anuncios nativos.

Llama a NativeAdOptions.Builder.enableCustomClickGestureDirection() con un NativeAdOptions.SwipeGestureDirection y un boolean para indicar si deseas que los toques se permitan como clics.

En el siguiente ejemplo, se implementa un gesto de deslizamiento personalizado hacia la derecha y se conserva el comportamiento normal de las pestañas.

  • Los gestos de clic personalizados están inhabilitados de forma predeterminada.

  • Cuando se inhabilitan, tu app admite el comportamiento normal de los clics.

  • Cuando se habilitan, tu app admite los gestos de deslizamiento personalizados.

En el siguiente ejemplo, se implementa un gesto de deslizamiento personalizado hacia la derecha y se conserva el comportamiento normal de las pestañas.

Java

NativeAdOptions adOptions =
    new NativeAdOptions.Builder()
        .enableCustomClickGestureDirection(
            NativeAdOptions.SWIPE_GESTURE_DIRECTION_RIGHT, /* tapsAllowed= */ true)
        .build();

// ca-app-pub-3940256099942544/2247696110 is a sample ad unit ID that has custom click
// gestures enabled.
AdLoader.Builder builder =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(adOptions);

Kotlin

val adOptions =
  NativeAdOptions.Builder()
    .enableCustomClickGestureDirection(NativeAdOptions.SWIPE_GESTURE_DIRECTION_RIGHT, true)
    .build()

val builder = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(adOptions)

Escucha los eventos de gestos de deslizamiento

Cuando se registra un clic de gesto de deslizamiento, el SDK de anuncios de Google para dispositivos móviles invoca el método onAdSwipeGestureClicked() en AdListener, además del método onAdClicked() existente.

Java

AdLoader adLoader =
    new AdLoader.Builder(context, AD_UNIT_ID)
        .withAdListener(
            new AdListener() {
              // Called when a swipe gesture click is recorded.
              @Override
              public void onAdSwipeGestureClicked() {
                // Called when a swipe gesture click is recorded.
                Log.d(TAG, "A swipe gesture click has occurred.");
              }

              @Override
              public void onAdClicked() {
                // Called when a swipe gesture click or a tap click is recorded, as
                // configured in NativeAdOptions.
                Log.d(TAG, "A swipe gesture click or a tap click has occurred.");
              }
            })
        .build();

Kotlin

val adLoader =
  AdLoader.Builder(context, AD_UNIT_ID)
    .withAdListener(
      object : AdListener() {
        override fun onAdSwipeGestureClicked() {
          // Called when a swipe gesture click is recorded.
          Log.d(TAG, "A swipe gesture click has occurred.")
        }

        override fun onAdClicked() {
          // Called when a swipe gesture click or a tap click is recorded, as
          // configured in NativeAdOptions.
          Log.d(TAG, "A swipe gesture click or a tap click has occurred.")
        }
      }
    )
    .build()

Mediación

Los gestos de clic personalizados solo funcionan en los anuncios nativos que renderiza el SDK de anuncios de Google para dispositivos móviles. Las fuentes de anuncios que requieren SDKs de terceros para la renderización no responden al parámetro de configuración de direcciones para los clics personalizados.