Combinar solicitações de anúncio nativo e de banner com renderização personalizada

Com algumas mudanças no código, é possível combinar anúncios nativos e de banner nas suas solicitações de anúncios.

Pré-requisitos

  • SDK dos anúncios para dispositivos móveis do Google versão 11.0.0 ou mais recente.
  • Conclua a etapa Começar.

Carregamento do anúncio

Os anúncios nativos renderizados de forma personalizada são carregados usando a classe AdLoader, que tem a própria classe AdLoader.Builder para personalização durante a criação. Ao adicionar detectores ao AdLoader durante a criação, um app especifica quais tipos de formatos de anúncio ele está pronto para receber. O AdLoader solicita apenas esses tipos.

O objeto AdLoader também pode ser configurado para fazer solicitações de anúncios que podem resultar em um anúncio de banner ou nativo. Adicionar uma OnAdManagerAdViewLoadedListener à AdLoader durante a criação especifica que os anúncios de banner precisam competir com os anúncios nativos para atender à solicitação.

O código a seguir demonstra como criar um AdLoader que pode carregar um anúncio nativo ou de banner em uma única solicitação:

Java

AdLoader adLoader = new AdLoader.Builder(context, "/21775744923/example/native-and-banner")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
      @Override
      public void onNativeAdLoaded(NativeAd nativeAd) {
        // Show the ad.
      }
    })
    .forAdManagerAdView(new OnAdManagerAdViewLoadedListener() {
      @Override
      public void onAdManagerAdViewLoaded(AdManagerAdView adView) {
        // Show the banner ad.
      }
    }, AdSize.BANNER, AdSize.MEDIUM_RECTANGLE)
    .withAdListener(new AdListener() {
      @Override
      public void onAdFailedToLoad(LoadAdError error) {
        // Handle the failure by logging, altering the UI, and so on.
      }
    })
    .withAdManagerAdViewOptions(new AdManagerAdViewOptions.Builder()
      // Methods in the AdManagerAdViewOptions.Builder class can be
      // used here to specify individual options settings.
      .build())
    .build();

Kotlin

val adLoader = AdLoader.Builder(this, "/21775744923/example/native-and-banner")
    .forNativeAd { nativeAd ->
      // Show the ad.
    }
    .forAdManagerAdView({ adView ->
      // Show the banner ad.
    }, AdSize.BANNER, AdSize.MEDIUM_RECTANGLE)
    .withAdListener(object: AdListener() {
      override fun onAdFailedToLoad(adError: LoadAdError) {
        // Handle the failure by logging, altering the UI, and so on.
      }
    })
    .withAdManagerAdViewOptions(AdManagerAdViewOptions.Builder()
      // Methods in the AdManagerAdViewOptions.Builder class can be
      // used here to specify individual options settings.
      .build())
    .build()

O método forAdManagerAdView() acima prepara o AdLoader para receber anúncios de banner. Uma lista de tamanhos de anúncio válidos de comprimento variável precisa ser especificada com um OnAdManagerAdViewLoadedListener ao invocar forAdManagerAdView().

Para fazer uma solicitação de anúncio válida, pelo menos um tamanho de anúncio válido precisa ser especificado. Quando um anúncio de banner é carregado, o método onAdManagerAdViewLoaded() do objeto listener especificado é chamado.

Como definir AdViewOptions

A última função incluída na criação do AdLoader acima é outro método opcional, withAdManagerAdViewOptions():

Java

.withAdManagerAdViewOptions(new AdManagerAdViewOptions.Builder()
    // Methods in the AdManagerAdViewOptions.Builder class can be
    // used here to specify individual banner options settings.
    .build()

Kotlin

.withAdManagerAdViewOptions(AdManagerAdViewOptions.Builder()
    // Methods in the AdManagerAdViewOptions.Builder class can be
    // used here to specify individual banner options settings.
    .build()

O objeto AdManagerAdViewOptions permite que os editores definam opções específicas para banners carregados pelo AdLoader, como:

setManualImpressionsEnabled()
Ativa os relatórios de impressões manuais para reservas do Google Ad Manager. Os apps que usam impressões manuais podem determinar por conta própria quando uma impressão precisa ser registrada. Para isso, basta chamar AdManagerAdView.recordManualImpression().