Anúncios nativos

Os anúncios nativos são recursos apresentados aos usuários por meio de componentes da IU nativos da plataforma. Elas são mostradas usando os mesmos tipos de visualização com os quais você já está criando seus layouts e podem ser formatadas para corresponder ao design visual do seu app.

Quando um anúncio nativo é carregado, seu app recebe um objeto de anúncio com os recursos dele. Em vez do SDK dos anúncios para dispositivos móveis do Google, o app é responsável por exibi-los.

Em termos gerais, há duas partes para implementar anúncios nativos: carregar um anúncio usando o SDK e, em seguida, exibir o conteúdo do anúncio no seu aplicativo.

Esta página mostra como usar o SDK para carregar anúncios nativos.

Pré-requisitos

Sempre testar 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 nosso ID de bloco de anúncios de teste dedicado 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 em seus próprios aplicativos durante a codificação, teste e depuração. Basta substituí-lo pelo seu próprio ID de bloco de anúncios antes de publicar o aplicativo.

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.

Carregando 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 à AdLoader ao criá-la, um app especifica quais tipos de anúncios nativos ela está pronta 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()

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 do 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 parâmetro único, que recebe callbacks do 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.
})

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()

Este método envia uma solicitação de 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 o 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 deve carregar para a solicitação. Esse número é limitado a cinco e não é garantido que o SDK retornará o número exato de anúncios solicitados.

Todos os anúncios retornados do Google serão diferentes uns dos outros, embora os anúncios de inventário reservado ou compradores de terceiros não tenham a garantia de serem exclusivos.

Não use o método loadAds() se você estiver usando a mediação, porque as solicitações para vários anúncios nativos não funcionam para códigos de bloco de anúncios que foram configurados para mediação.

Callbacks

Após uma chamada para loadAd(), um único callback é feito aos métodos de listener definidos anteriormente para exibir o objeto do anúncio nativo ou informar um erro.

Após uma chamada para loadAds(), são feitos vários retornos de chamada (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.

Veja 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 foram destruídas no método onDestroy() da atividade.

No callback onNativeAdLoaded, destrua os anúncios nativos atuais que serão desreferenciados.

Outra verificação importante é se a atividade for destruída e, se for, 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.

  • Aplicativos que usam anúncios nativos em uma lista devem pré-armazenar a lista de anúncios em cache.

  • Ao pré-armazenar os anúncios em cache, limpe o cache e atualize após uma hora.

  • Não chame loadAd() ou loadAds() em uma AdLoader até que a primeira solicitação termine de carregar.

Aceleração de hardware para anúncios em vídeo

Para que os anúncios em vídeo sejam exibidos com sucesso 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 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, também é possível controlá-la 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 HW para mais informações sobre as opções de controle da aceleração de hardware. As visualizações de anúncios individuais não podem 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 seu anúncio

Depois de carregar um anúncio, resta exibi-lo aos usuários. Consulte nosso Guia nativo avançado para ver como.