Anúncios em banner

Os anúncios de banner ocupam um lugar no layout de um app, na parte de cima ou de baixo da tela do dispositivo. Eles permanecem na tela enquanto os usuários interagem com o app e podem ser atualizados automaticamente após um determinado período. Se você não tem muita experiência com publicidade para dispositivos móveis, saiba que eles são um ótimo ponto de partida. Estudo de caso.

Este guia mostra como integrar anúncios de banner de AdMob a um app Android. Além de snippets de código e instruções, ele também inclui informações sobre o dimensionamento de banners corretamente e links para outros recursos.

Pré-requisitos

Adicionar AdView ao layout

A primeira etapa para mostrar um banner é colocar AdView no layout da Activity ou Fragment em que você quer exibi-lo. A maneira mais fácil de fazer isso é adicionar um ao arquivo de layout XML correspondente. Confira um exemplo que mostra o AdView de uma atividade:

# main_activity.xml
<com.google.android.gms.ads.AdView
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    ads:adSize="BANNER"
    ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
</com.google.android.gms.ads.AdView>

Observe os seguintes atributos obrigatórios:

  • ads:adSize: defina o tamanho de anúncio que você quer usar. Se você não quiser usar o tamanho padrão definido pela constante, defina um tamanho personalizado. Consulte a seção sobre tamanho do banner para mais detalhes.

  • ads:adUnitId: defina como o identificador exclusivo fornecido ao bloco de anúncios no seu app em que os anúncios serão exibidos. Se você mostrar anúncios de banner em atividades diferentes, cada uma precisará de um bloco de anúncios.

Como alternativa, você pode criar AdView de maneira programática:

Java

AdView adView = new AdView(this);

adView.setAdSize(AdSize.BANNER);

adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
// TODO: Add adView to your view hierarchy.

Kotlin

val adView = AdView(this)

adView.adSize = AdSize.BANNER

adView.adUnitId = "ca-app-pub-3940256099942544/6300978111"
// TODO: Add adView to your view hierarchy.

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. Sua conta poderá ser suspensa se isso não for feito.

A maneira mais fácil de carregar anúncios de teste é usando nosso ID de bloco de anúncios de teste dedicado para banners do Android:

ca-app-pub-3940256099942544/6300978111

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 codificação, o teste e a depuração. Não se esqueça de 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 para dispositivos móveis funcionam, consulte Anúncios de teste.

Carregar um anúncio

Quando AdView estiver em vigor, a próxima etapa será carregar um anúncio. Isso é feito com o método loadAd() na classe AdView. Ele usa um parâmetro AdRequest, que contém informações de tempo 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 no método onCreate() de uma Activity:

MainActivity (trecho)

Java

package ...

import ...
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

public class MainActivity extends AppCompatActivity {
    private AdView mAdView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });

        mAdView = findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
    }
}

Kotlin

package ...

import ...
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdView

class MainActivity : AppCompatActivity() {

    lateinit var mAdView : AdView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        MobileAds.initialize(this) {}

        mAdView = findViewById(R.id.adView)
        val adRequest = AdRequest.Builder().build()
        mAdView.loadAd(adRequest)
    }
}

Se o anúncio não for carregado, não será necessário solicitar outro explicitamente, desde que você tenha configurado o bloco de anúncios para atualizar. O SDK dos anúncios para dispositivos móveis do Google respeita qualquer taxa de atualização especificada na interface da WebAdMob . Se você não tiver ativado a atualização, será necessário emitir uma nova solicitação.

Pronto! Agora seu app está pronto para exibir anúncios de banner.

Eventos de anúncio

Para personalizar ainda mais o comportamento do seu anúncio, você pode vincular a vários eventos do ciclo de vida do anúncio: carregamento, abertura, fechamento e assim por diante. É possível detectar esses eventos usando a classe AdListener.

Para usar um AdListener com AdView, chame o método setAdListener():

Java

mAdView.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.
    }
});

Kotlin

mAdView.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 modificáveis em AdListener corresponde a um evento no ciclo de vida de um anúncio.

Métodos modificá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 aplicativo depois de ver o URL de destino de um anúncio. Ele pode ser usado pelo app para retomar atividades suspensas ou realizar qualquer outro trabalho necessário para se preparar para a interação. Consulte o exemplo de AdListener da AdMob para ver uma implementação dos métodos do listener de anúncios no app de demonstração da API para Android.
onAdFailedToLoad() O método onAdFailedToLoad() é o único que inclui um parâmetro. O parâmetro de erro do tipo LoadAdError descreve o erro ocorrido. Para mais informações, consulte a documentação 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 um anúncio termina de carregar. Se você quiser atrasar a adição de AdView à sua atividade ou fragmento até ter certeza de que um anúncio será carregado, por exemplo, você pode fazer isso aqui.
onAdOpened() O método onAdOpened() é invocado quando um anúncio abre uma sobreposição que cobre a tela.

O tamanho do contêiner em que você coloca o anúncio precisa ter pelo menos o mesmo tamanho do banner. Se o contêiner tiver padding, isso diminuirá o tamanho de maneira eficaz. Se o anúncio de banner não couber no contêiner, o banner não será exibido, e você receberá este aviso nos registros:

W/Ads: Not enough space to show ad. Needs 320x50 dp, but only has 288x495 dp.

A tabela abaixo lista os tamanhos padrão de banner.

Tamanho em dp (L x A) Descrição Disponibilidade Constante "AdSize"
320 x 50 Banner Smartphones e tablets BANNER
320 x 100 Banner grande Smartphones e tablets LARGE_BANNER
300 x 250 Retângulo médio IAB Smartphones e tablets MEDIUM_RECTANGLE
468 x 60 Banner IAB em tamanho original Tablets FULL_BANNER
728 x 90 Cabeçalho do IAB Tablets LEADERBOARD
Largura fornecida x Altura adaptável Banner adaptativo Smartphones e tablets N/A
Largura da tela x 32|50|90 Banner inteligente Smartphones e tablets SMART_BANNER

Para definir um tamanho de banner personalizado, defina o AdSize desejado conforme mostrado:

Java

AdSize adSize = new AdSize(300, 50);

Kotlin

val adSize = AdSize(300, 50)

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

Para que os anúncios em vídeo sejam exibidos nas suas exibiçõ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 optar por desativá-la. Caso isso se aplique ao seu app, recomendamos ativar a aceleração de hardware para classes Activity que usam anúncios.

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 poderá 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 abaixo 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 saber mais sobre as opções de controle desse tipo de aceleração. 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 atividade em si precisa ter a aceleração de hardware ativada.

Outros recursos

Exemplos no GitHub

  • Exemplo de anúncios de banner: Java | Kotlin

  • Demonstração de recursos avançados: Java | Kotlin

  • App de exemplo RecyclerView de banner: Java

Tutoriais em vídeo "Mobile Ads Garage"

Histórias de sucesso

Próximas etapas

Confira os seguintes tópicos: