Os anúncios nativos são ativos de publicidade apresentados aos usuários por componentes da interface nativos da plataforma. Elas são mostradas usando os mesmos tipos de visualizações com que você já está criando seus layouts e podem ser formatadas para combinar com o design visual do app.
Quando um anúncio nativo é carregado, o app recebe um objeto de anúncio que contém os ativos, e o app, e não o SDK dos anúncios para dispositivos móveis do Google, é responsável por exibir os anúncios.
De modo geral, há duas partes para implementar anúncios nativos: carregar um anúncio usando o SDK e mostrar o conteúdo do anúncio no app.
Esta página mostra como usar o SDK para carregar anúncios nativos. Dica: saiba mais sobre os anúncios nativos no nosso manual sobre anúncios nativos.
Confira também algumas histórias de sucesso de clientes: estudo de caso 1, estudo de caso 2.
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.
A maneira mais fácil de carregar anúncios de teste é usar o ID dedicado do bloco de anúncios de teste para anúncios nativos no Android:
ca-app-pub-3940256099942544/2247696110
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 ID de 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 Anúncios de teste.
Carregar anúncios
Os anúncios nativos são carregados com a classe AdLoader
, que tem a própria classe Builder
para personalizá-la durante a criação. Ao adicionar listeners ao AdLoader
durante a criação, um app especifica quais tipos de anúncios nativos ele está pronto para
receber. Em seguida, o AdLoader
solicita apenas esses tipos.
Criar um AdLoader
O código a seguir demonstra como criar um AdLoader
que pode carregar anúncios
nativos:
Java
AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
@Override
public void onNativeAdLoaded(NativeAd nativeAd) {
// Show the ad.
}
})
.withAdListener(new AdListener() {
@Override
public void onAdFailedToLoad(LoadAdError adError) {
// Handle the failure by logging, altering the UI, and so on.
}
})
.withNativeAdOptions(new NativeAdOptions.Builder()
// Methods in the NativeAdOptions.Builder class can be
// used here to specify individual options settings.
.build())
.build();
Kotlin
val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110}")
.forNativeAd { ad : NativeAd ->
// Show the ad.
}
.withAdListener(object : AdListener() {
override fun onAdFailedToLoad(adError: LoadAdError) {
// Handle the failure.
}
})
.withNativeAdOptions(NativeAdOptions.Builder()
// Methods in the NativeAdOptions.Builder class can be
// used here to specify individual options settings.
.build())
.build()
O método
forNativeAd()
é responsável por preparar o AdLoader
para o formato NativeAd
.
Quando um anúncio é carregado, o método onNativeAdLoaded()
do objeto listener
é chamado.
Configurar um AdListener com o AdLoader (opcional)
Ao criar o AdLoader
, a função
withAdListener
define um
AdListener
para o
carregador. O método usa um AdListener
como único parâmetro, que recebe
callbacks do AdLoader
quando eventos de ciclo de vida do anúncio ocorrem:
Java
.withAdListener(new AdListener() {
// AdListener callbacks can be overridden here.
})
Kotlin
.withAdListener(object : AdListener() {
// AdListener callbacks can be overridden here.
})
Solicitar anúncios
Depois de criar um AdLoader
, é hora de usá-lo para solicitar anúncios.
Há dois métodos disponíveis para isso: loadAd()
e loadAds()
.
loadAd()
Esse método envia uma solicitação para um único anúncio.
Java
adLoader.loadAd(new AdRequest.Builder().build());
Kotlin
adLoader.loadAd(AdRequest.Builder().build())
loadAds()
Esse método envia uma solicitação para vários anúncios (até cinco):
Java
adLoader.loadAds(new AdRequest.Builder().build(), 3);
Kotlin
adLoader.loadAds(AdRequest.Builder().build(), 3)
Ambos os métodos usam um objeto
AdRequest
como primeiro parâmetro. Essa é a mesma classe AdRequest
usada por banners e intersticiais, e é possível usar métodos da classe AdRequest
para adicionar informações de segmentação, assim como você faria com outros formatos de anúncio.
Carregar vários anúncios (opcional)
O método loadAds()
usa um parâmetro adicional: o número de anúncios que o SDK
precisa tentar carregar para a solicitação. Esse número é limitado a cinco, e não é garantido que o SDK retorne o número exato de anúncios solicitados.
Os anúncios do Google retornados serão diferentes uns dos outros, mas não há garantia de que os anúncios de inventário reservado ou de compradores terceirizados sejam exclusivos.
Não use o método loadAds()
se você estiver usando a mediação, já que as solicitações para vários anúncios nativos não funcionam atualmente para IDs de blocos de anúncios que foram configurados para mediação.
Callbacks
Após uma chamada para loadAd()
, um único callback é feito para os
métodos de listener definidos anteriormente para exibir o objeto do anúncio nativo ou relatar um erro.
Depois de uma chamada para loadAds()
, vários desses callbacks são feitos (pelo menos um,
e não mais do que o número de anúncios solicitados). Os apps que solicitam vários anúncios
precisam chamar AdLoader.isLoading()
nas implementações de callback para
determinar se o processo de carregamento foi concluído.
Confira um exemplo que mostra como verificar isLoading()
no
callback onNativeAdLoaded()
:
Java
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
@Override
public void onNativeAdLoaded(NativeAd nativeAd) {
...
// some code that displays the ad.
...
if (adLoader.isLoading()) {
// The AdLoader is still loading ads.
// Expect more adLoaded or onAdFailedToLoad callbacks.
} else {
// The AdLoader has finished loading ads.
}
}
}).build();
adLoader.loadAds(new AdRequest.Builder().build(), 3);
Kotlin
lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd {
...
// some code that displays the ad.
...
if (adLoader.isLoading) {
// The AdLoader is still loading ads.
// Expect more adLoaded or onAdFailedToLoad callbacks.
} else {
// The AdLoader has finished loading ads.
}
}.build()
adLoader.loadAds(AdRequest.Builder().build(), 3)
Liberar recursos
Use o método destroy()
em anúncios nativos carregados. Isso libera
recursos utilizados e evita vazamentos de memória.
Verifique se todas as referências a NativeAd
são destruídas no método
onDestroy()
da atividade.
No callback onNativeAdLoaded
, destrua todos os anúncios
nativos que serão desreferenciados.
Outra verificação importante é se a atividade foi destruída. Se sim, chame destroy()
no
anúncio retornado e retorne imediatamente:
Java
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
@Override
public void onNativeAdLoaded(NativeAd nativeAd) {
// If this callback occurs after the activity is destroyed, you
// must call destroy and return or you may get a memory leak.
// Note `isDestroyed()` is a method on Activity.
if (isDestroyed()) {
nativeAd.destroy();
return;
}
...
}
}).build();
Kotlin
lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd { nativeAd ->
// If this callback occurs after the activity is destroyed, you
// must call destroy and return or you may get a memory leak.
// Note `isDestroyed` is a method on Activity.
if (isDestroyed) {
nativeAd.destroy()
return@forNativeAd
}
...
}.build()
Práticas recomendadas
Siga estas regras ao carregar anúncios.
Os apps que usam anúncios nativos em uma lista precisam pré-cachear a lista de anúncios.
Ao armazenar anúncios em cache, limpe o cache e atualize após uma hora.
Não chame
loadAd()
ouloadAds()
em umAdLoader
até que a primeira solicitação termine de carregar.Limite o armazenamento em cache de anúncios nativos somente ao necessário. Por exemplo, ao fazer a pré-cache, armazene em cache apenas os anúncios que estão imediatamente visíveis na tela. Os anúncios nativos consomem muita memória, e armazenar anúncios nativos sem destruí-los resulta em uso excessivo de memória.
Destrua os anúncios nativos quando eles não estiverem mais em uso.
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 nativos, 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 de atividade 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 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 opções de controle da aceleração de hardware. Observe que 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.
Mostrar seu anúncio
Depois de carregar um anúncio, basta exibi-lo aos usuários. Confira nosso guia avançado de nativas para saber como.