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
- Leia o Guia explicativo.
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:
/21775744923/example/banner
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 AdManagerAdView ao layout
A primeira etapa para exibir um banner é colocar AdManagerAdView
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.
AdManagerAdView adView = new AdManagerAdView(this);
adView.setAdSizes(getAdSize());
adView.setAdUnitId("/21775744923/example/banner");
// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);
// Start loading the ad in the background.
AdManagerAdRequest adRequest = new AdManagerAdRequest.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 = AdManagerAdView(this)
adView.adSizes = adSize
adView.adUnitId = "/21775744923/example/banner"
// Create an ad request.
val adRequest = AdManagerAdRequest.Builder().build()
// Start loading the ad in the background.
adView.loadAd(adRequest)
}
Carregar um anúncio
Quando a AdManagerAdView estiver pronta, a próxima etapa será carregar um anúncio. Isso é feito com o método loadAd()
na classe AdManagerAdView
. Ele usa um parâmetro AdManagerAdRequest
, 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 AdManagerAdView(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.
AdManagerAdRequest adRequest = new AdManagerAdRequest.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 = AdManagerAdRequest.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 Ad Managerinterface 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
AdManagerAdView.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
AdManagerAdView.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.
|
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 AdManagerAdView à 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.
Contagem manual de impressões
A contagem manual de impressões só é compatível com campanhas de venda direta e internas com criativos programados diretamente no Ad Manager. Ela não deve ser usada para preenchimento ou anúncios de redes de terceiros. Para mais detalhes, consulte Contar impressões e cliques.
É possível enviar pings de impressão manualmente para o Ad Manager se você tiver condições
especiais para o registro de uma impressão. Para fazer isso, ative um
AdManagerAdRequest
para impressões manuais antes de carregar um anúncio:
Java
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
.setManualImpressionsEnabled(true)
.build();
Kotlin
val adRequest = AdManagerAdRequest.Builder()
.setManualImpressionsEnabled(true)
.build()
Ao determinar que um anúncio foi retornado com sucesso e está sendo exibido na tela, você pode registrar uma impressão manualmente:
Java
AdManagerAdView.recordManualImpression();
Kotlin
AdManagerAdView.recordManualImpression()
Eventos de apps
Com os eventos de aplicativos, você pode criar anúncios que enviam mensagens ao código do aplicativo. O app pode realizar ações com base nessas mensagens.
É possível detectar eventos específicos de aplicativos do Ad Manager usando AppEventListener
.
Esses eventos podem ocorrer a qualquer momento durante o ciclo de vida do anúncio, mesmo antes de
onAdLoaded()
ser chamado.
Java
public interface AppEventListener {
void onAppEvent(String name, String info);
}
Kotlin
interface AppEventListener {
fun onAppEvent(name: String, info: String)
}
O void onAppEvent(String name, String info)
é chamado quando um evento de app ocorre
em um anúncio. Essa interface pode ser implementada pela sua atividade ou qualquer outro
objeto:
Java
import com.google.android.gms.ads.admanager.*;
public class BannerExample extends Activity implements AppEventListener {
}
Kotlin
import com.google.android.gms.ads.admanager.*
class BannerExample : Activity(), AppEventListener {
}
e, em seguida, transmitidos para AdManagerAdView
:
Java
AdManagerAdView.setAppEventListener(this);
Kotlin
AdManagerAdView.appEventListener = this
Confira um exemplo que mostra como mudar a cor de fundo do seu app dependendo de um evento do app com um nome de cor:
Java
@Override
public void onAppEvent(String name, String info) {
if ("color".equals(name)) {
if ("green".equals(info)) {
// Set background color to green.
} else if ("blue".equals(info)) {
// Set background color to blue.
} else {
// Set background color to black.
}
}
}
Kotlin
override fun onAppEvent(name: String?, info: String?) {
if (name == "color") {
when (info) {
"green" -> {
// Set background color to green.
}
"blue" -> {
// Set background color to blue.
}
else -> {
// Set background color to black.
}
}
}
}
Este é o criativo correspondente que envia mensagens coloridas de evento do app para o listener:
<html>
<head>
<script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
// Send a color=green event when ad loads.
admob.events.dispatchAppEvent("color", "green");
document.getElementById("ad").addEventListener("click", function() {
// Send a color=blue event when ad is clicked.
admob.events.dispatchAppEvent("color", "blue");
});
});
</script>
<style>
#ad {
width: 320px;
height: 50px;
top: 0px;
left: 0px;
font-size: 24pt;
font-weight: bold;
position: absolute;
background: black;
color: white;
text-align: center;
}
</style>
</head>
<body>
<div id="ad">Carpe diem!</div>
</body>
</html>
Confira o exemplo de eventos de app do Ad Manager para uma implementação de eventos de app no app de demonstração da API.
Outros recursos
Exemplos no GitHub
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.