Este guia aborda o carregamento de um anúncio de banner adaptativo fixo em um app Android.
Pré-requisitos
- Conclua o Guia para iniciantes.
Sempre teste com anúncios de teste
Ao criar e testar seus apps, use anúncios de teste em vez de publicidade de produção ativa. Sua conta poderá ser suspensa se isso não for feito.
A maneira mais fácil de carregar anúncios de teste é usar o ID do bloco de anúncios de teste dedicado para banners do Android:
/21775744923/example/adaptive-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, o teste e a 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 dos anúncios para dispositivos móveis do Google funcionam, consulte Ativar anúncios de teste.
Definir o contêiner de visualização de anúncios
Adicione uma visualização ao arquivo XML do layout para servir como o contêiner do anúncio de banner adaptável fixado:
<!-- 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" />
Definir o tamanho do anúncio
Defina o AdSize
como um
tipo de banner adaptativo fixo com uma largura especificada:
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))
Adicionar AdManagerAdView
ao layout
Crie um AdManagerAdView
usando o tamanho do anúncio para adicionar ao
layout do app:
// Create a new ad view.
adView = new AdManagerAdView(this);
adView.setAdUnitId(AD_UNIT);
// 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);
// Create a new ad view.
val adView = AdManagerAdView(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)
Carregar um anúncio
Depois que o AdManagerAdView
estiver em vigor, 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 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:
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);
val adRequest = AdManagerAdRequest.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 atualização, não é necessário solicitar outro anúncio quando ele não é carregado. O SDK dos anúncios para dispositivos móveis do Google respeita qualquer taxa de atualização especificada na interface do Ad Manager. Se você não tiver ativado a atualização, faça uma nova solicitação. Para mais detalhes sobre a atualização de blocos de anúncios, como definir uma taxa de atualização, consulte Taxa de atualização dos anúncios em apps para dispositivos móveis.
Eventos de anúncio
É 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. É recomendável definir o callback antes de carregar o banner.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.
}
});
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 para 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. O app pode usá-lo para retomar atividades suspensas ou
realizar qualquer outro trabalho necessário para ficar pronto para 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 que ocorreu. Para mais informações,
consulte a documentação de 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 o carregamento de um anúncio é concluído. Se você quiser adiar
a adição da AdManagerAdView
à sua atividade ou 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 um overlay que cobre a tela.
|
Aceleração de hardware para anúncios em vídeo
Para que os anúncios em vídeo sejam exibidos nas visualizaçõ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 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 comporta corretamente com a aceleração de hardware globalmente
ativada, ela também pode ser controlada para atividades específicas. 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 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 podem ser ativadas para aceleração de hardware se a atividade estiver desativada. Portanto, a atividade 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 veiculados diretamente no Ad Manager. Ela não deve ser usada para preenchimentos ou anúncios de redes de terceiros. Para mais detalhes, consulte Como contar impressões e cliques.
É possível enviar manualmente pings de impressão para o Ad Manager se você tiver condições
especiais para quando uma impressão precisa ser registrada. Para fazer isso, ative um
AdManagerAdRequest
para impressões manuais antes de carregar um anúncio:
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
.setManualImpressionsEnabled(true)
.build();
val adRequest = AdManagerAdRequest.Builder()
.setManualImpressionsEnabled(true)
.build()
Quando você determinar que um anúncio foi retornado e está na tela, é possível registrar uma impressão manualmente:
AdManagerAdView.recordManualImpression();
AdManagerAdView.recordManualImpression()
Eventos de apps
Com os eventos de apps, você pode criar anúncios que enviam mensagens para o código do app. O app pode realizar ações com base nessas mensagens.
Você pode detectar eventos de app específicos 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.
public interface AppEventListener {
void onAppEvent(String name, String info);
}
interface AppEventListener {
fun onAppEvent(name: String, info: String)
}
void onAppEvent(String name, String info)
é chamado quando um evento do app ocorre
em um anúncio. Essa interface pode ser implementada pela sua atividade ou por qualquer outro
objeto:
import com.google.android.gms.ads.admanager.*;
public class BannerExample extends Activity implements AppEventListener {
}
import com.google.android.gms.ads.admanager.*
class BannerExample : Activity(), AppEventListener {
}
e transmitidas para o AdManagerAdView
:
AdManagerAdView.setAppEventListener(this);
AdManagerAdView.appEventListener = this
Confira um exemplo que mostra como mudar a cor de plano de fundo do app dependendo de um evento do app com um nome de cor:
@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.
}
}
}
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.
}
}
}
}
E aqui está o criativo correspondente que envia mensagens de eventos de apps coloridos 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>
Consulte o exemplo de eventos de app do Ad Manager para conferir uma implementação de eventos 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 recolhível são anúncios de banner que são inicialmente apresentados como uma sobreposição maior, com um botão para recolher o anúncio para um tamanho menor. Considere usá-lo para otimizar ainda mais sua performance. Consulte Anúncios de banner recolhíveis 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 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 colocam anúncios de banner em conteúdo rolável. Consulte banners adaptativos inline para mais detalhes.