Anúncios de banner

Selecione a plataforma: Android iOS Unity Flutter

Os anúncios de banner são retangulares e ocupam uma parte do layout do app. Os banners adaptativos fixos são anúncios de proporção fixa que permanecem na tela enquanto os usuários interagem com o app, fixados na parte de cima ou de baixo.

Este guia aborda como carregar um anúncio de banner adaptativo fixo em um app Android.

Pré-requisitos

  • Leia o guia para iniciantes.
  • Opcional: para uma amostra de implementação de anúncios de banner, selecione um dos seguintes apps de exemplo:

Sempre usar anúncios de teste

Ao criar e testar seus apps, use anúncios de teste em vez de anúncios de produção ativos. Caso contrário, sua conta poderá ser suspensa.

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

ca-app-pub-3940256099942544/9214589741

Ele foi configurado especialmente para retornar anúncios de teste em todas as solicitações, e você pode usá-lo nos seus próprios apps durante a programação, os testes e a depuração. Não se esqueça de substituí-lo pelo seu ID do bloco de anúncios antes de publicar o app.

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

Definir a visualização de anúncio

Layout XML

Adicione uma visualização ao arquivo XML de layout para servir como contêiner do anúncio de banner adaptativo fixo:

<!-- Ad view container that fills the width of the screen and adjusts its
    height to the content of the ad. -->
<FrameLayout
        android:id="@+id/ad_view_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_alignParentBottom="true" />

Jetpack Compose

  1. Inclua o módulo JetpackComposeDemo/compose-util. Esse módulo inclui auxiliares para compor o objeto AdView e os recursos.

  2. Crie uma classe BannerAd usando o módulo compose-util:


// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { BannerAd(adView, modifier) }
}

Definir o tamanho do anúncio

Defina AdSize como um tipo de banner adaptativo fixo com uma largura especificada:

Java

// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

Kotlin

// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))

Jetpack Compose


// Set the adaptive banner ad size with a given width.
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

Adicionar AdView ao layout

Crie um objeto AdView usando o tamanho do anúncio para adicionar ao layout do seu app:

Java


// Create a new ad view.
adView = new AdView(this);
adView.setAdUnitId(AD_UNIT_ID);
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

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

Kotlin


// Create a new ad view.
val adView = AdView(this)
adView.adUnitId = AD_UNIT_ID
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))
this.adView = adView

// Replace ad container with new ad view.
binding.adViewContainer.removeAllViews()
binding.adViewContainer.addView(adView)

Jetpack Compose


val adView = remember { AdView(context) }

// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = BANNER_AD_UNIT_ID

// Set the adaptive banner ad size with a given width.
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { BannerAd(adView, modifier) }
}

Carregar um anúncio

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

Veja um exemplo de como carregar um anúncio:

Java

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);

Kotlin

val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)

Se tudo der certo, o app estará pronto para mostrar anúncios de banner.

Atualizar um anúncio

Se você configurou o bloco de anúncios para ser atualizado, não é necessário solicitar outro anúncio quando ele não carrega. O SDK dos anúncios para dispositivos móveis do Google respeita qualquer taxa de atualização especificada na interface da AdMob. Se você não tiver ativado a atualização, faça uma nova solicitação. Para mais detalhes sobre atualização de blocos de anúncios, como instruções para definir uma taxa de atualização, consulte Usar a atualização automática para seus anúncios de banner.

Liberar um recurso de anúncio

Quando você terminar de usar um anúncio de banner, poderá liberar os recursos associados a ele.

Para isso, remova o anúncio da hierarquia de visualização e remova todas as referências dele:

Java

public void destroyBanner() {
  // Remove banner from view hierarchy.
  if (adView != null) {
    View parentView = (View) adView.getParent();
    if (parentView instanceof ViewGroup) {
      ((ViewGroup) parentView).removeView(adView);
    }

    // Destroy the banner ad resources.
    adView.destroy();
  }

  // Drop reference to the banner ad.
  adView = null;
}

Kotlin

fun destroyBanner() {
  // Remove banner from view hierarchy.
  val parentView = adView?.parent
  if (parentView is ViewGroup) {
    parentView.removeView(adView)
  }

  // Destroy the banner ad resources.
  adView?.destroy()

  // Drop reference to the banner ad.
  adView = null
}

Eventos de anúncios

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

Java

if (adView != null) {
  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(@NonNull 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 volta ao app depois de acessar o URL de destino de um anúncio. O app pode usar isso para retomar atividades suspensas ou realizar qualquer outro trabalho necessário na preparação 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 Android.
onAdFailedToLoad() O método onAdFailedToLoad() é o único que inclui um parâmetro. O parâmetro de erro do tipo LoadAdError descreve o erro que ocorreu. Para mais informações, consulte a documentação sobre como depurar 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 quiser atrasar a adição do objeto AdView à sua atividade ou fragmento (por exemplo, até ter certeza de que um anúncio será carregado), é aqui que você pode fazer isso.
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 mostrados corretamente nas visualizações de anúncios de banner, a aceleração de hardware precisa estar ativada.

Esse recurso é ativado por padrão, mas alguns apps podem desativá-lo. Caso isso se aplique ao seu app, recomendamos ativar a aceleração de hardware para classes Activity que usam anúncios.

Ativar a aceleração de hardware

Se o app não se comporta da forma correta com a aceleração de hardware ativada globalmente, ela também pode ser controlada para atividades específicas. Para ativar ou desativar esse recurso, use o atributo android:hardwareAccelerated para os elementos <application> e <activity> no AndroidManifest.xml. O exemplo a seguir 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. As visualizações de anúncios individuais não poderão ser ativadas para aceleração de hardware se a atividade estiver desativada. Portanto, a atividade em si precisa ter a aceleração de hardware habilitada.

Próximas etapas

Banners recolhíveis

Os anúncios de banner recolhível são apresentados inicialmente como uma sobreposição maior, com um botão para deixá-lo menor. Considere usar esse recurso para otimizar ainda mais sua performance. Consulte anúncios de banner recolhível para mais detalhes.

Banners adaptativos inline

Os banners adaptativos in-line são maiores e mais altos do que os fixos. Eles têm altura variável e podem ser tão altos quanto a tela do dispositivo. Os banners adaptativos inline são recomendados em vez dos anúncios de banner adaptativo fixo para apps que mostram anúncios de banner em conteúdo rolável. Consulte banners adaptativos inline para mais detalhes.

Confira outros temas