Os anúncios nativos são recursos de publicidade apresentados aos usuários por meio de componentes de IU nativos da plataforma. Eles são exibidos usando os mesmos tipos de visualização com que você já está criando seus layouts. Eles podem ser formatados de acordo com o design visual da experiência do usuário em que eles residem. Em termos de programação, isso significa
que, quando um anúncio nativo é carregado, seu app recebe um objeto
NativeAd
que contém os recursos dele. Nesse caso, o app (em vez do SDK dos anúncios
para dispositivos móveis do Google) é responsável por exibi-los.
Em linhas gerais, há duas partes na implementação de anúncios nativos: o carregamento de um anúncio pelo SDK e a exibição do conteúdo do anúncio no aplicativo. Esta página trata do uso do SDK para carregar anúncios nativos.
Prerequisites
- Importe o SDK dos anúncios para dispositivos móveis do Google por conta própria ou como parte do Firebase.
Carregar um anúncio
Os anúncios nativos são carregados por meio da 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 dele, um app especifica quais tipos de anúncios nativos ele estará 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 possa 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 by logging, altering the UI, and so on. } }) .withNativeAdOptions(NativeAdOptions.Builder() // Methods in the NativeAdOptions.Builder class can be // used here to specify individual options settings. .build()) .build()
Prepare-se para o formato NativeAd
O primeiro método acima é responsável por preparar o AdLoader
para o formato GTIN:
forNativeAd()
- Chamar esse método configura o
AdLoader
para solicitar anúncios nativos. Quando um anúncio é carregado, o métodoonNativeAdLoaded()
do objeto do listener é chamado.
Quando o AdLoader
faz uma solicitação de anúncio, o Google seleciona e retorna o anúncio que
maximiza o rendimento do editor.
Usar AdListener com um AdLoader
Durante a criação do AdLoader
acima, a função
withAdListener
define um
AdListener
.
Essa etapa é opcional. O método usa um AdListener
como parâmetro único, que recebe callbacks da AdLoader
quando ocorrem eventos de ciclo de vida do anúncio:
Java
.withAdListener(new AdListener() { // AdListener callbacks can be overridden here. })
Kotlin
.withAdListener(object : AdListener() { // AdListener callbacks can be overridden here. })
Carregando anúncios
Depois de criar um AdLoader
, é hora de usá-lo para carregar anúncios.
Há dois métodos disponíveis para isso: loadAd()
e loadAds()
.
O método loadAd()
envia uma solicitação para um único anúncio:
loadAd()
- Este método envia uma solicitação para um único anúncio.
Java
adLoader.loadAd(new AdRequest.Builder().build());
Kotlin
adLoader.loadAd(AdRequest.Builder().build())
O método loadAds()
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)
Esses dois métodos usam um objeto
AdRequest
como primeiro parâmetro. Essa é a mesma classe AdRequest
usada em banners e intersticiais, e você pode usar métodos da classe AdRequest
para adicionar informações de segmentação, assim como faria com outros formatos de anúncio.
loadAds()
usa um parâmetro adicional: o número de anúncios que o SDK deve tentar carregar para a solicitação. Esse número é limitado a um máximo de cinco, e não é garantido que o SDK retornará o número exato de anúncios solicitados. Se vários anúncios forem retornados por uma chamada para loadAds()
, eles serão diferentes entre si.
Após uma chamada para loadAd()
, um único callback será feito aos métodos do listener definidos acima para exibir o objeto do anúncio nativo ou informar um erro.
Após uma chamada para loadAds()
, serão feitos vários retornos de chamada (pelo menos um
e não mais 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.
Veja um exemplo que mostra como verificar o 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 ad) { ... // 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)
Limpeza
Use o método destroy()
nos anúncios nativos carregados. Isso libera
recursos utilizados e evita vazamentos de memória.
Garanta que todas as referências NativeAd
sejam destruídas no método onDestroy()
da sua atividade.
No callback onNativeAdLoaded
, destrua todos os anúncios
nativos existentes que serão desreferenciados.
Outra verificação importante é se a atividade for destruída
e, em caso afirmativo, chamar destroy()
no anúncio retornado e retornar imediatamente:
Java
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd(new NativeAd.OnNativeAdLoadedListener() { @Override public void onNativeAdLoaded(NativeAd ad) { // 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()) { ad.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()
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 publicados. 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 anúncios nativos avançados no Android:
ca-app-pub-3940256099942544/2247696110
Ela foi configurada especialmente para retornar anúncios de teste para todas as solicitações, e você pode usá-la nos seus próprios apps durante a programação, teste e depuração. Basta substituí-lo pelo seu próprio ID de bloco de anúncios antes de publicar o aplicativo.
Para ver mais informações sobre como os anúncios de teste do SDK de anúncios para dispositivos móveis funcionam, consulte Anúncios de teste.
Quando solicitar anúncios
Os aplicativos que exibem anúncios nativos podem solicitá-los antes de serem exibidos. Em muitos casos, essa é a prática recomendada. Um app que exibe uma lista de itens com anúncios nativos mistos, por exemplo, pode carregar anúncios nativos para a lista inteira, sabendo que alguns serão exibidos somente depois que o usuário rolar a visualização e que alguns talvez não sejam exibidos.
Aceleração de hardware para anúncios em vídeo
Para que os anúncios em vídeo sejam exibidos nas suas 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 desativá-la. Caso isso se aplique ao seu app, recomendamos ativar a aceleração de hardware para as 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, também é possível controlá-lo para atividades individuais. Para ativar ou
desativar a aceleração de hardware, use o atributo android:hardwareAccelerated
para os elementos
<application>
e
<activity>
no seu 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 de aceleração de hardware. 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 própria atividade precisa ter a aceleração de hardware ativada.
Exibir um NativeAd
Após carregar um anúncio, falta que ele seja exibido aos usuários. Consulte nosso Guia nativo avançado para ver como.
,Os anúncios nativos são recursos de publicidade apresentados aos usuários por meio de componentes de IU nativos da plataforma. Eles são exibidos usando os mesmos tipos de visualização com que você já está criando seus layouts. Eles podem ser formatados de acordo com o design visual da experiência do usuário em que eles residem. Em termos de programação, isso significa
que, quando um anúncio nativo é carregado, seu app recebe um objeto
NativeAd
que contém os recursos dele. Nesse caso, o app (em vez do SDK dos anúncios
para dispositivos móveis do Google) é responsável por exibi-los.
Em linhas gerais, há duas partes na implementação de anúncios nativos: o carregamento de um anúncio pelo SDK e a exibição do conteúdo do anúncio no aplicativo. Esta página trata do uso do SDK para carregar anúncios nativos.
Prerequisites
- Importe o SDK dos anúncios para dispositivos móveis do Google por conta própria ou como parte do Firebase.
Carregar um anúncio
Os anúncios nativos são carregados por meio da 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 dele, um app especifica quais tipos de anúncios nativos ele estará 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 possa 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 by logging, altering the UI, and so on. } }) .withNativeAdOptions(NativeAdOptions.Builder() // Methods in the NativeAdOptions.Builder class can be // used here to specify individual options settings. .build()) .build()
Prepare-se para o formato NativeAd
O primeiro método acima é responsável por preparar o AdLoader
para o formato GTIN:
forNativeAd()
- Chamar esse método configura o
AdLoader
para solicitar anúncios nativos. Quando um anúncio é carregado, o métodoonNativeAdLoaded()
do objeto do listener é chamado.
Quando o AdLoader
faz uma solicitação de anúncio, o Google seleciona e retorna o anúncio que
maximiza o rendimento do editor.
Usar AdListener com um AdLoader
Durante a criação do AdLoader
acima, a função
withAdListener
define um
AdListener
.
Essa etapa é opcional. O método usa um AdListener
como parâmetro único, que recebe callbacks da AdLoader
quando ocorrem eventos de ciclo de vida do anúncio:
Java
.withAdListener(new AdListener() { // AdListener callbacks can be overridden here. })
Kotlin
.withAdListener(object : AdListener() { // AdListener callbacks can be overridden here. })
Carregando anúncios
Depois de criar um AdLoader
, é hora de usá-lo para carregar anúncios.
Há dois métodos disponíveis para isso: loadAd()
e loadAds()
.
O método loadAd()
envia uma solicitação para um único anúncio:
loadAd()
- Este método envia uma solicitação para um único anúncio.
Java
adLoader.loadAd(new AdRequest.Builder().build());
Kotlin
adLoader.loadAd(AdRequest.Builder().build())
O método loadAds()
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)
Esses dois métodos usam um objeto
AdRequest
como primeiro parâmetro. Essa é a mesma classe AdRequest
usada em banners e intersticiais, e você pode usar métodos da classe AdRequest
para adicionar informações de segmentação, assim como faria com outros formatos de anúncio.
loadAds()
usa um parâmetro adicional: o número de anúncios que o SDK deve tentar carregar para a solicitação. Esse número é limitado a um máximo de cinco, e não é garantido que o SDK retornará o número exato de anúncios solicitados. Se vários anúncios forem retornados por uma chamada para loadAds()
, eles serão diferentes entre si.
Após uma chamada para loadAd()
, um único callback será feito aos métodos do listener definidos acima para exibir o objeto do anúncio nativo ou informar um erro.
Após uma chamada para loadAds()
, serão feitos vários retornos de chamada (pelo menos um
e não mais 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.
Veja um exemplo que mostra como verificar o 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 ad) { ... // 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)
Limpeza
Use o método destroy()
nos anúncios nativos carregados. Isso libera
recursos utilizados e evita vazamentos de memória.
Garanta que todas as referências NativeAd
sejam destruídas no método onDestroy()
da sua atividade.
No callback onNativeAdLoaded
, destrua todos os anúncios
nativos existentes que serão desreferenciados.
Outra verificação importante é se a atividade for destruída
e, em caso afirmativo, chamar destroy()
no anúncio retornado e retornar imediatamente:
Java
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forNativeAd(new NativeAd.OnNativeAdLoadedListener() { @Override public void onNativeAdLoaded(NativeAd ad) { // 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()) { ad.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()
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 publicados. 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 anúncios nativos avançados no Android:
ca-app-pub-3940256099942544/2247696110
Ela foi configurada especialmente para retornar anúncios de teste para todas as solicitações, e você pode usá-la nos seus próprios apps durante a programação, teste e depuração. Basta substituí-lo pelo seu próprio ID de bloco de anúncios antes de publicar o aplicativo.
Para ver mais informações sobre como os anúncios de teste do SDK de anúncios para dispositivos móveis funcionam, consulte Anúncios de teste.
Quando solicitar anúncios
Os aplicativos que exibem anúncios nativos podem solicitá-los antes de serem exibidos. Em muitos casos, essa é a prática recomendada. Um app que exibe uma lista de itens com anúncios nativos mistos, por exemplo, pode carregar anúncios nativos para a lista inteira, sabendo que alguns serão exibidos somente depois que o usuário rolar a visualização e que alguns talvez não sejam exibidos.
Aceleração de hardware para anúncios em vídeo
Para que os anúncios em vídeo sejam exibidos nas suas 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 desativá-la. Caso isso se aplique ao seu app, recomendamos ativar a aceleração de hardware para as 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, também é possível controlá-lo para atividades individuais. Para ativar ou
desativar a aceleração de hardware, use o atributo android:hardwareAccelerated
para os elementos
<application>
e
<activity>
no seu 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 de aceleração de hardware. 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 própria atividade precisa ter a aceleração de hardware ativada.
Exibir um NativeAd
Após carregar um anúncio, falta que ele seja exibido aos usuários. Consulte nosso Guia nativo avançado para ver como.