Definir recursos nativos avançados

Os anúncios nativos têm muitos recursos avançados que permitem fazer outras personalizações e oferecer a melhor experiência do anúncio possível. Este guia mostra como usar os recursos avançados dos anúncios nativos.

Pré-requisitos

Controles de recursos

Nesta seção, detalhamos como personalizar os recursos do criativo nos seus anúncios nativos. Você pode especificar uma proporção preferida para recursos de mídia, além da forma como os recursos de imagem são baixados e mostrados.

Controles da proporção preferida de mídia

Com os controles de proporção de mídia, você pode especificar uma preferência para a proporção dos criativos de anúncio.

Chame NativeAdRequest.Builder.setMediaAspectRatio() com um valor NativeAd.NativeMediaAspectRatio.

  • Quando não definidos, o anúncio retornado pode ter qualquer proporção de mídia.

  • Quando definidos, você pode melhorar a experiência do usuário especificando o tipo de proporção da sua preferência.

O exemplo a seguir instrui o SDK a escolher uma imagem ou um vídeo com uma proporção específica.

Kotlin

val adRequest = NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
  .build()

Java

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
  .build();

Controle de download de imagens

Com o controle de download de imagens, você decide se o SDK vai retornar recursos de imagem ou apenas URIs.

Chame NativeAdRequest.Builder.disableImageDownloading().

  • O controle fica desativado por padrão.

  • Se ele estiver desativado, o GMA Next-Gen SDK vai preencher a imagem e o URI para você.

  • Quando ativado, o SDK preenche apenas o URI, permitindo que você faça o download das imagens reais a seu critério.

O exemplo a seguir instrui o SDK a retornar apenas o URI.

Kotlin

val adRequest = NativeAdRequest.Builder(
    "ca-app-pub-3940256099942544/2247696110",
    listOf(NativeAd.NativeAdType.NATIVE))
    .setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
    .disableImageDownloading()
    .build()

val adCallback: NativeAdLoaderCallback =
  object : NativeAdLoaderCallback {
    override fun onNativeAdLoaded(nativeAd: NativeAd) {
      // Get the image uri.
      val imageUri = nativeAd.image?.uri
    }
  };

// Load the native ad with the ad request and callback.
NativeAdLoader.load(adRequest, adLoaderCallback);

Java

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  List.of(NativeAd.NativeAdType.NATIVE))
  .disableImageDownloading()
  .build();

NativeAdLoaderCallback adLoaderCallback =
  new NativeAdLoaderCallback() {
    @Override
    public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
      // Get the image uri.
      Uri imageUri = nativeAd.getImage().getUri();
    }
  };

// Load the native ad with the ad request and callback.
NativeAdLoader.load(adRequest, adLoaderCallback);

Controles de payload de imagens

Alguns anúncios têm uma série de imagens em vez de apenas uma. Use esse recurso para indicar se o app está preparado para mostrar todas as imagens ou apenas uma.

  • Os controles de payload de imagens ficam desativados por padrão.

  • Quando desativados, o app instrui o SDK a fornecer apenas a primeira imagem de recursos que contêm uma série.

  • Quando ativados, o app indica que está preparado para mostrar todas as imagens de recursos que têm mais de uma.

O exemplo a seguir instrui o SDK a retornar vários recursos de imagem.

Posições das Opções de Anúncios

Nesta seção, detalhamos como posicionar a sobreposição das Opções de Anúncios. Você pode colocá-la em um dos quatro cantos da imagem ou renderizar em uma visualização personalizada.

Controles de posições das Opções de Anúncios

Com os controles de posições das Opções de Anúncios, você escolhe em qual canto renderizar o ícone Opções de Anúncios.

Chame NativeAdRequest.Builder.setAdChoicesPlacement() com um valor NativeAdRequest.AdChoicesPlacement.

  • Se a posição do ícone Opções de Anúncios não for definida, ele será exibido no canto superior direito.

  • Se definido, o Opções de anúncios é colocado na posição personalizada conforme solicitado.

O exemplo a seguir demonstra como definir uma posição personalizada para a imagem das Opções de Anúncios.

Kotlin

val adRequest = NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
  .build()

Java

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
  .build();

Visualização personalizada das Opções de Anúncios

O recurso de visualização personalizada das Opções de Anúncios permite posicionar o ícone Opções de Anúncios em um local personalizado. Isso é diferente dos controles de posição das Opções de Anúncios, que permitem especificar apenas um dos quatro cantos.

Chame NativeAdView.setAdChoicesView() com um valor AdChoicesView.

O exemplo abaixo demonstra como definir uma visualização personalizada de Opções de Anúncios, com o ícone Opções de Anúncios renderizado dentro do AdChoicesView.

Kotlin

override fun onNativeAdLoaded(nativeAd: NativeAd) {
  val nativeAdView = NativeAdView(applicationContext)
  val adChoicesView = AdChoicesView(this)
  nativeAdView.adChoicesView = adChoicesView
}

Java

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

Controles de vídeo

Nesta seção, detalhamos como personalizar a experiência de reprodução dos anúncios em vídeo. Você pode definir o estado inicial como silenciado e implementar controles personalizados.

Comportamento de iniciar sem som

Com o comportamento de iniciar sem som, você pode ativar ou desativar o áudio inicial de um vídeo.

Chame VideoOptions.Builder.setStartMuted() com um valor boolean e chame NativeAdOptions.Builder.setVideoOptions().

  • O comportamento de iniciar sem som está ativado por padrão.

  • Quando desativado, o app solicita que o vídeo comece com áudio.

  • Quando ativado, o app solicita que o vídeo comece sem áudio.

O exemplo a seguir mostra como iniciar o vídeo com o áudio ativado.

Kotlin

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

val adRequest = NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .build()

Java

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

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .build()

Controles de mídia personalizados

Isso permite solicitar controles personalizados de entrada de vídeo para reproduzir, pausar ou silenciar o vídeo.

Para definir o estado de iniciar anúncios sem som, chame VideoOptions.Builder.setCustomControlsRequested().

  • Os controles de mídia personalizados ficam desativados por padrão.

  • Quando desativados, seu vídeo vai mostrar controles de entrada renderizados pelo SDK.

Se o anúncio tiver conteúdo de vídeo e os controles personalizados estiverem ativados, mostre-os, já que o anúncio não vai exibir nenhum controle por conta própria. Em seguida, os controles podem chamar os métodos relevantes no

VideoOptions.Builder.setCustomControlsRequested().

O exemplo a seguir mostra como solicitar um vídeo com controles de mídia personalizados.

Kotlin

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

val adRequest = new NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .build()

Java

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

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .build()

Verificar se os controles personalizados estão ativados

Como não se sabe no momento da solicitação se o anúncio retornado vai permitir controles de vídeo personalizados, verifique se eles estão ativados.

Kotlin

  val adCallback: NativeAdLoaderCallback =
    object : NativeAdLoaderCallback {
      override fun onNativeAdLoaded(nativeAd: NativeAd) {
        val mediaContent = nativeAd.mediaContent;
        if (mediaContent != null) {
          val videoController = mediaContent.videoController;
          val canShowCustomControls = videoController?.isCustomControlsEnabled();
        }
      }
    };

Java

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

Renderizar controles de vídeo personalizados

Renderize controles de vídeo personalizados usando estas práticas recomendadas:

  1. Renderize os controles personalizados como um elemento filho da visualização de anúncio nativo. Com essa abordagem, os cálculos de visibilidade da medição aberta consideram os controles personalizados como uma obstrução amigável.
  2. Evite renderizar uma sobreposição invisível em toda a visualização de mídia. As sobreposições bloqueiam os cliques na visualização, afetando negativamente a performance dos anúncios nativos. Crie uma pequena sobreposição que seja grande o suficiente para caber nos controles.

Gestos de clique personalizados

O recurso de gestos de clique personalizados dos anúncios nativos permite registrar cliques no anúncio quando a pessoa desliza os dedos em visualizações de anúncios. Ele funciona com apps que usam esses gestos na navegação. Este guia mostra como ativar gestos de clique personalizados nos seus anúncios nativos.

Chame NativeAdRequest.Builder.enableCustomClickGestureDirection() com um NativeAd.SwipeGestureDirection e um valor boolean.

  • Os gestos de clique personalizados ficam desativados por padrão.

  • Quando desativados, o app usa o comportamento normal de cliques.

  • Quando ativados, o app aceita gestos de deslizar personalizados.

O exemplo a seguir implementa um gesto personalizado de deslizar para a direita e preserva o comportamento normal de toque.

Kotlin

val adRequest =
  NativeAdRequest.Builder(AD_UNIT_ID, listOf(NativeAdType.NATIVE))
    .enableCustomClickGestureDirection(
      SwipeGestureDirection.RIGHT,
      /* customClickGestureAllowTaps= */ true,
    )
    .build()

Java

NativeAdRequest adRequest =
    new NativeAdRequest.Builder(AD_UNIT_ID, List.of(NativeAdType.NATIVE))
        .enableCustomClickGestureDirection(
            SwipeGestureDirection.RIGHT, /* customClickGestureAllowTaps= */ true)
        .build();

Detectar eventos de gestos de deslizar

Para detectar eventos de gestos de deslizar, chame NativeAd.setAdEventCallback() com um NativeAdEventCallback e implemente o método onAdSwipeGestureClicked().

Kotlin

  val adCallback: NativeAdLoaderCallback =
    object : NativeAdLoaderCallback {
      override fun onNativeAdLoaded(nativeAd: NativeAd) {
        // Implement the onAdSwipeGestureClicked() method.
        val nativeAdCallback: NativeAdEventCallback = object : NativeAdEventCallback {
          override fun onAdSwipeGestureClicked() {
            // A swipe gesture click has occurred.
          }
        }
      }
    }
  // Load the native ad with the ad request and callback.
  NativeAdLoader.load(adRequest, adCallback)

Java

  NativeAdLoaderCallback adCallback =
    new NativeAdLoaderCallback() {
      @Override
      public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
        // Implement the onAdSwipeGestureClicked() method.
        NativeAdEventCallback nativeAdCallback = new NativeAdEventCallback() {
          @Override
          public void onAdSwipeGestureClicked() {
            // A swipe gesture click has occurred.
          }
        };
      }
    };
  // Load the native ad with the ad request and callback.
  NativeAdLoader.load(adRequest, adCallback);

Mediação

Gestos de clique personalizados só funcionam em anúncios nativos renderizados pelo SDK dos anúncios para dispositivos móveis do Google. As origens de anúncios que exigem SDKs de terceiros para renderização não respondem à configuração de instruções de clique personalizado.