Opciones de anuncios nativos

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

Requisitos previos

Controles de recursos

Controles de relación de aspecto preferidos

Los controles de relación de aspecto de los medios te permiten especificar una preferencia para la relación de aspecto de las creatividades de anuncios.

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

  • Si no se establece, el anuncio que se muestra puede tener cualquier relación de aspecto de contenido multimedia.

  • Cuando se configure, podrás mejorar la experiencia del usuario especificando el tipo de relación de aspecto preferido.

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

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

AdLoader loader = new AdLoader.Builder(this, 'ca-app-pub-3940256099942544/2247696110')
                              .withNativeAdOptions(nativeAdOptions)
                              .build();

Control de descarga de imágenes

El control de descarga de imágenes permite decidir si se usan recursos de imagen que muestra el SDK.

Llama a NativeAdOptions.Builder.setReturnUrlsForImageAssets() con un valor boolean.
  • El control de descarga de imágenes está inhabilitado de forma predeterminada.

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

  • Cuando está habilitado, el SDK solo propaga 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 solo el URI.

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

AdLoader loader = new AdLoader.Builder(this, 'ca-app-pub-3940256099942544/2247696110')
                              .withNativeAdOptions(nativeAdOptions)
                              .forNativeAd(nativeAd -> {
                                List<Uri> imageUris = new ArrayList<>();
                                for (Image image : nativeAd.getImages()) {
                                  imageUris.add(image.getUri());
                                }
                              })
                              .build();

Controles de carga útil de imagen

Algunos anuncios tienen una serie de imágenes en lugar de solo una. Usa esta función para Indica si tu app está preparada para mostrar todas las imágenes o solo una.

Llama a NativeAdOptions.Builder.setRequestMultipleImages() con un valor boolean.
  • Los controles de carga útil de imagen están inhabilitados de forma predeterminada.

  • Cuando se inhabilita, tu app le indica al SDK que proporcione solo primera imagen de cualquier elemento que contenga una serie.

  • Cuando está habilitada, tu app indica que está preparada para mostrar todas las imágenes de los recursos que tengan más de una.

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

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

AdLoader loader = new AdLoader.Builder(this, 'ca-app-pub-3940256099942544/2247696110')
                              .withNativeAdOptions(nativeAdOptions)
                              .build();

Posiciones 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 NativeAdOption.AdChoicesPlacement.

  • Si no la estableces, la posición del ícono de AdChoices se establecerá en la parte superior derecha.

  • Si se establece, AdChoices se coloca en la posición personalizada según lo solicitado.

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

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

AdLoader loader = new AdLoader.Builder(this, 'ca-app-pub-3940256099942544/2247696110')
                              .withNativeAdOptions(nativeAdOptions)
                              .build();

Vista personalizada de AdChoices

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

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

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


public void onNativeAdLoaded(NativeAd ad) {
    NativeAdView nativeAdView = new NativeAdView(getApplicationContext());
    AdChoicesView adChoicesView = new AdChoicesView(this);
    nativeAdView.setAdChoicesView(adChoicesView);
}

Controles de video

Cómo iniciar el comportamiento de silenciamiento

El comportamiento de inicio silenciado te permite inhabilitar o habilitar el audio inicial de un video.

Llama a VideoOptions.Builder.setStartMuted() con un valor boolean.
  • El comportamiento de inicio silenciado está habilitado de forma predeterminada.

  • Cuando está inhabilitada, tu app solicita que el video comience con audio.

  • Cuando está habilitada, tu app solicita que el video comience con audio silenciado.

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

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

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

AdLoader loader = new AdLoader.Builder(this, 'ca-app-pub-3940256099942544/2247696110')
                              .withNativeAdOptions(adOptions).build();

Controles de reproducción personalizados

Esto te permite solicitar controles de entrada de video personalizados para reproducir, pausar o silenciar el video.

Llama a VideoOptions.Builder.setCustomControlsRequested() con un valor boolean.
  • Los controles de reproducción personalizados están inhabilitados de forma predeterminada.

  • Cuando se inhabilite, el video mostrará los controles de entrada renderizados por el SDK.

  • Si el anuncio tiene contenido de video y los controles personalizados están habilitados, debes mostrarlos junto con el anuncio, ya que este no mostrará ningún control. Luego, los controles pueden llamar a los métodos relevantes en VideoController.

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

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

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

AdLoader loader = new AdLoader.Builder(this, 'ca-app-pub-3940256099942544/2247696110')
                              .withNativeAdOptions(adOptions).build();

Verifica si los controles personalizados están habilitados

Debido a que no se sabe en el momento de la solicitud si el anuncio devuelto permitirá controles de video personalizados, debes verificar si tiene habilitados los controles personalizados.

Java

@Override
public void onNativeAdLoaded(NativeAd nativeAd) {
  MediaContent mediaContent = nativeAd.getMediaContent();
  if (mediaContent != null) {
    VideoController videoController = mediaContent.getVideoController();
    boolean canShowCustomControls = videoController.isCustomControlsEnabled();
  }
}

Kotlin

NativeAd.OnNativeAdLoadedListener { ad ->
  val mediaContent = ad.mediaContent
  if (mediaContent != null) {
    val videoController = mediaContent.videoController
    val canShowCustomControls = videoController.isCustomControlsEnabled
  }
}

Renderiza controles de video personalizados

Sigue estas prácticas recomendadas para renderizar controles de video personalizados:

  1. Renderiza la vista de controles personalizados como un elemento secundario de la vista de anuncios nativos. Este enfoque garantiza que los cálculos de visibilidad de las mediciones abiertas consideren los controles personalizados como una obstrucción amigable.
  2. Evita renderizar una superposición invisible sobre toda la vista de contenido multimedia. Las superposiciones bloquean los clics en la vista de medios, 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 entre en los controles.

Gestos de clic personalizados

Los gestos de clic personalizados son una función de anuncios nativos que permite que los deslizamientos en las vistas de anuncios se registren como clics en el anuncio. Está diseñado para funcionar con apps que usan gestos de deslizamiento para la navegación de contenido. En esta guía, se muestra cómo habilitar los clics personalizados en tus anuncios nativos.

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

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

  • Si la inhabilitas, tu app admitirá el comportamiento normal de clics.

  • Cuando esté habilitada, tu app admitirá 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 la pestaña.

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

// The following sample ad unit ID has been enabled for custom click gestures
// and can be used for testing.
AdLoader.Builder builder = new AdLoader
    .Builder(this, 'ca-app-pub-3940256099942544/2247696110')
    .withNativeAdOptions(adOptions);

Cómo escuchar eventos de gestos de deslizamiento

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

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

        // Called when a swipe gesture click or a tap click is recorded, as
        // configured in NativeAdOptions.
        @Override
        public void onAdClicked() {
          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. Fuentes de anuncios que requieren SDKs de terceros para de datos, no respondas a la configuración de la ruta de clic personalizada.