Anúncios nativos

Selecione a plataforma: Android iOS Flutter Unity

Os anúncios nativos são recursos de publicidade apresentados aos usuários por componentes de interface nativos da plataforma. Eles aparecem com base nos mesmos tipos de visualização que você usa para criar seus layouts. Além disso, esses anúncios podem ser formatados para combinar com o design visual do seu app.

Quando um anúncio nativo é carregado, seu app recebe um objeto de anúncio que contém os recursos dele. O app, e não o SDK dos anúncios para dispositivos móveis do Google, é responsável por mostrar esses recursos.

De modo geral, há duas partes para implementar anúncios nativos com sucesso: carregar um anúncio usando o SDK e exibir o conteúdo dele no app.

Nesta página, mostramos como usar o SDK para carregar anúncios nativos. Dica: saiba mais sobre anúncios nativos no nosso manual de anúncios nativos.

Confira também algumas histórias de sucesso de clientes: estudo de caso 1, estudo de caso 2.

Pré-requisitos

Sempre teste 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 em todas as solicitações, e você pode usá-lo nos seus próprios apps durante a programação, o teste e a depuração. Não se esqueça de substituir 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 personalização 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. 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 com sucesso, 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 do ciclo de vida do anúncio acontecem:

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 de 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 de vários anúncios (até cinco):

Java

adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

adLoader.loadAds(AdRequest.Builder().build(), 3)

Os dois métodos usam um objeto AdRequest como primeiro parâmetro. Essa é a mesma classe AdRequest usada por banners e intersticiais. Você pode usar métodos da classe AdRequest para adicionar informações de segmentação, assim como 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 tentar carregar para a solicitação. Esse número é limitado a cinco, e não há garantia de que o SDK vai retornar a quantidade exata de anúncios solicitados.

Todos os anúncios do Google retornados serão diferentes entre si, mas não há garantia de que os anúncios de inventário reservado ou compradores terceirizados sejam únicos.

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

Callbacks

Depois de uma chamada para loadAd(), um único callback é feito para os métodos de listener definidos anteriormente para entregar o objeto de anúncio nativo ou informar um erro.

Depois de uma chamada para loadAds(), vários callbacks desse tipo 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 de 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 de NativeAd foram destruídas no método onDestroy() da atividade.

No seu callback onNativeAdLoaded, destrua todos os anúncios nativos existentes que serão removidos.

Outra verificação importante é se a atividade foi destruída. Em caso afirmativo, 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é-armazenar em cache a lista de anúncios.

  • Ao pré-armazenar anúncios em cache, limpe o cache e recarregue depois de uma hora.

  • Não chame loadAd() ou loadAds() em um AdLoader até que a primeira solicitação termine de carregar.
  • Limite o cache de anúncios nativos apenas ao que é necessário. Por exemplo, ao fazer pré-cache, armazene em cache apenas os anúncios que estão imediatamente visíveis na tela. Os anúncios nativos têm uma grande ocupação de memória, e o armazenamento em cache sem destruição resulta em uso excessivo de memória.

  • Destrua os anúncios nativos quando 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 corretamente nas suas visualizações de anúncios nativos, é necessário ativar a aceleração de hardware.

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 de atividade que usam anúncios.

Como ativar a aceleração de hardware

Se o app não se comporta da forma correta com a aceleração de hardware ativada globalmente, 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&<quot;
    !-- For activities that use ads, hardwareAcceleration should b>e tru<e. --
    activity android:hardwareAccelerate>d=&qu<ot;true" /
    !-- For activities that don't use ads, hardwareAccel>erati<on can be false. --
    activity android:hardw>a<reAccelerate>d="false" /
/application

Consulte o guia de aceleração de hardware para mais informações sobre 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 em si precisa ter a aceleração de hardware ativada.

Mostrar seu anúncio

Depois de carregar um anúncio, basta mostrá-lo aos usuários. Acesse nosso guia avançado de anúncios nativos para saber como fazer isso.