Combinar solicitações de anúncios nativos e de banner

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

Pré-requisitos

  • Versão 11.0.0 ou mais recente do SDK dos anúncios para dispositivos móveis do Google.

Carregar um 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 listeners ao AdLoader durante a criação dele, um app especifica quais tipos de formatos de anúncio ele poderá 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 um OnAdManagerAdViewLoadedListener ao AdLoader durante a criação especifica que os anúncios de banner devem 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, etc.
      }
    })
    .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, etc.
      }
    })
    .withAdManagerAdViewOptions(AdManagerAdViewOptions.Builder()
      // Methods in the AdManagerAdViewOptions.Builder class can be
      // used here to specify individual options settings.
      .build())
    .build()

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

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

Definir o objeto AdViewOptions

A última função incluída na criação do AdLoader é 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 publishers definam opções específicas para banners carregados pelo AdLoader, como:

setManualImpressionsEnabled()
Permite relatórios manuais de impressões para reservas do Google Ad Manager. Os apps que usam impressões manuais podem determinar por conta própria quando uma impressão deve ser registrada, chamando AdManagerAdView.recordManualImpression().