Anúncios em banner

Os anúncios de banner são retangulares e ocupam uma parte do layout de um app. Eles permanecem na tela enquanto os usuários interagem com o app e ficam fixados na parte de cima ou de baixo da tela ou inline com o conteúdo conforme a rolagem do usuário. Os anúncios de banner podem ser atualizados automaticamente após um determinado período. Consulte Visão geral dos anúncios de bannerpara mais informações.

Este guia mostra como começar a usar anúncios de banner adaptativo ancorados, que maximizam a performance otimizando o tamanho do anúncio para cada dispositivo usando uma largura de anúncio que você especificar.

Os anúncios de banner adaptativo fixo são de proporção fixa, e não normais. A proporção é semelhante ao padrão do setor 320 x 50. Depois de especificar a largura total disponível, você recebe um anúncio com a altura ideal para essa largura. A altura ideal não muda nas solicitações do mesmo dispositivo, e as visualizações ao redor não precisam se mover quando o anúncio é atualizado.

Pré-requisitos

Sempre faça testes com anúncios de teste

Ao criar e testar seus apps, use anúncios de teste em vez de anúncios de produção ativos. Sua conta poderá ser suspensa se isso não for feito.

A maneira mais fácil de carregar anúncios de teste é usar nosso ID de bloco de anúncios de teste dedicado para banners do Android:

ca-app-pub-3940256099942544/9214589741

Ele foi configurado especialmente para retornar anúncios de teste para cada solicitação e você pode usá-lo nos seus próprios apps durante a programação, teste e depuração. Basta substituí-lo pelo seu próprio ID do bloco de anúncios antes de publicar o app.

Para mais informações sobre como os anúncios de teste do SDK para dispositivos móveis funcionam, consulte Anúncios de teste.

Adicionar AdView ao layout

A primeira etapa para exibir um banner é colocar AdView no layout da Activity ou do Fragment em que você quer exibi-lo :

Java

private AdSize getAdSize() {
  // Determine the screen width (less decorations) to use for the ad width.
  Display display = getWindowManager().getDefaultDisplay();
  DisplayMetrics outMetrics = new DisplayMetrics();
  display.getMetrics(outMetrics);

  float density = outMetrics.density;

  float adWidthPixels = adContainerView.getWidth();

  // If the ad hasn't been laid out, default to the full screen width.
  if (adWidthPixels == 0) {
    adWidthPixels = outMetrics.widthPixels;
  }

  int adWidth = (int) (adWidthPixels / density);
  return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
}

private void loadBanner() {
  
  // Create a new ad view.
  AdView adView = new AdView(this);
  adView.setAdSizes(getAdSize());
  adView.setAdUnitId("ca-app-pub-3940256099942544/9214589741");

  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

  // Start loading the ad in the background.
  AdRequest adRequest = new AdRequest.Builder().build();
  adView.loadAd(adRequest);
}

Kotlin


// Determine the screen width (less decorations) to use for the ad width.
// If the ad hasn't been laid out, default to the full screen width.
private val adSize: AdSize
  get() {
    val display = windowManager.defaultDisplay
    val outMetrics = DisplayMetrics()
    display.getMetrics(outMetrics)

    val density = outMetrics.density

    var adWidthPixels = binding.adViewContainer.width.toFloat()
    if (adWidthPixels == 0f) {
      adWidthPixels = outMetrics.widthPixels.toFloat()
    }

    val adWidth = (adWidthPixels / density).toInt()
    return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
  }

private fun loadBanner() {
  
  // Create a new ad view.
  val adView = AdView(this)
  adView.adSizes = adSize
  adView.adUnitId = "ca-app-pub-3940256099942544/9214589741"

  // Create an ad request.
  val adRequest = AdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

Carregar um anúncio

Quando a AdView estiver pronta, a próxima etapa será carregar um anúncio. Isso é feito com o método loadAd() na classe AdView. Ele usa um parâmetro AdRequest, que contém informações sobre o ambiente de execução, como informações de segmentação, sobre uma única solicitação de anúncio.

Confira um exemplo que mostra como carregar um anúncio no método onCreate() de uma Activity:

Java

private void loadBanner() {
  // Create a new ad view.
  adView = new AdView(this);
  adView.setAdUnitId(AD_UNIT);
  adView.setAdSize(getAdSize());
  
  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

  // Start loading the ad in the background.
  AdRequest adRequest = new AdRequest.Builder().build();
  adView.loadAd(adRequest);
}

Kotlin

private fun loadBanner() {
  // This is an ad unit ID for a test ad. Replace with your own banner ad unit ID.
  adView.adUnitId = "/6499/example/banner"
  adView.setAdSize(adSize)
  
  // Create an ad request.
  val adRequest = AdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

Se o anúncio não for carregado, você não precisará solicitar outro explicitamente, desde que o bloco de anúncios esteja configurado para ser atualizado. O SDK dos anúncios para dispositivos móveis do Google respeitará qualquer taxa de atualização especificada na AdMobinterface da Web. Se você não ativou a atualização, será necessário emitir uma nova solicitação.

Pronto! Seu app está pronto para exibir anúncios de banner.

Eventos de anúncio

É possível detectar vários eventos no ciclo de vida do anúncio, incluindo carregamento, impressão e clique, bem como eventos de abertura e fechamento do anúncio. Recomendamos definir o callback antes de carregar o banner.

Java

AdView.setAdListener(new AdListener() {
    @Override
    public void onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    @Override
    public void onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    @Override
    public void onAdFailedToLoad(LoadAdError adError) {
      // Code to be executed when an ad request fails.
    }

    @Override
    public void onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    @Override
    public void onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    @Override
    public void onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
});

Kotlin

AdView.adListener = object: AdListener() {
    override fun onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    override fun onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    override fun onAdFailedToLoad(adError : LoadAdError) {
      // Code to be executed when an ad request fails.
    }

    override fun onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    override fun onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    override fun onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
}

Cada um dos métodos substituíveis em AdListener corresponde a um evento no ciclo de vida de um anúncio.

Métodos substituíveis
onAdClicked() O método onAdClicked() é invocado quando um clique é registrado em um anúncio.
onAdClosed() O método onAdClosed() é invocado quando um usuário retorna ao app depois de visualizar o URL de destino de um anúncio. Seu app pode usá-lo para retomar atividades suspensas ou realizar qualquer outro trabalho necessário para ficar pronto para a interação. Consulte o exemplo de AdListener da AdMob para ver uma implementação dos métodos de listener de anúncios no app de demonstração da API para Android.
onAdFailedToLoad() O método onAdFailedToLoad() é o único que inclui um parâmetro. O parâmetro de erro do tipo LoadAdError descreve o erro. Para mais informações, consulte a documentação Depuração de erros de carregamento de anúncios.
onAdImpression() O método onAdImpression() é invocado quando uma impressão é registrada para um anúncio.
onAdLoaded() O método onAdLoaded() é executado quando um anúncio termina de carregar. Se você quiser atrasar a adição de AdView à sua atividade ou ao seu fragmento até ter certeza de que um anúncio será carregado, por exemplo, faça isso aqui.
onAdOpened() O método onAdOpened() é invocado quando um anúncio abre uma sobreposição que cobre a tela.

Aceleração de hardware para anúncios em vídeo

Para que os anúncios em vídeo sejam exibidos corretamente nas suas exibições de anúncios de banner, a aceleração de hardware precisa estar ativada.

A aceleração de hardware é ativada por padrão, mas alguns apps podem optar por desativá-la. Se isso se aplica ao seu app, recomendamos ativar a aceleração de hardware para classes Activity que usam anúncios.

Como ativar a aceleração de hardware

Se o app não se comportar corretamente com a aceleração de hardware ativada globalmente, ela também pode ser controlada para atividades individuais. Para ativar ou desativar a aceleração de hardware, use o atributo android:hardwareAccelerated para os elementos <application> e <activity> no AndroidManifest.xml. O exemplo abaixo ativa a aceleração de hardware para todo o app, mas a desativa para uma atividade:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

Consulte o Guia de aceleração de hardware para mais informações sobre as opções de controle da aceleração. Observe que visualizações de anúncios individuais não podem ser ativadas para aceleração de hardware se a atividade estiver desativada. Portanto, a atividade em si precisa ter a aceleração de hardware ativada.

Outros recursos

Exemplos no GitHub

  • Exemplo de anúncios de banner adaptativo fixo: Java | Kotlin
  • Demonstração de recursos avançados: Java | Kotlin

Próximas etapas

Banners que podem ser recolhidos

Os anúncios de banner que podem ser recolhidos são apresentados inicialmente como uma sobreposição maior, com um botão para recolhê-los para um tamanho menor. Considere usá-la para otimizar ainda mais seu desempenho. Consulte anúncios de banner que podem ser recolhidos para mais detalhes.

Banners adaptativos inline

Os banners adaptativos inline são maiores e mais altos em comparação com os banners adaptativos fixos. Eles têm altura variável e podem ter a mesma altura da tela do dispositivo. Recomendamos o uso de banners adaptativos inline, em vez de anúncios de banner adaptativo fixo para apps que posicionam anúncios de banner em conteúdo rolável. Consulte banners adaptativos in-line para mais detalhes.

Explorar outros tópicos