Anúncios em banner

Os anúncios de banner são retangulares e ocupam uma parte do layout de um app. Eles permanecem na tela enquanto os usuários interagem com o app, seja ancorado na parte superior ou inferior da tela ou inline com o conteúdo conforme o usuário rola a tela. Banner os anúncios podem ser atualizados automaticamente após um determinado período. Consulte a Visão geral dos anúncios de banner. para mais informações.

Este guia mostra como começar a usar o console anúncios de banner adaptativo, que maximiza o desempenho otimizando o tamanho do anúncio para cada dispositivo usando uma largura que você especificar.

Os anúncios de banner adaptativo fixo são anúncios de proporção fixa, e não os de tamanho fixo. A proporção é semelhante ao padrão do setor 320 x 50. Uma vez você especificar a largura total disponível, ele retornará um anúncio com a altura para essa largura. A altura ideal não muda entre as solicitações de no mesmo dispositivo, e as visualizações ao redor não precisam se mover quando o anúncio é atualizado.

Pré-requisitos

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. 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 Banners do Android:

/6499/example/adaptive-banner

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, o teste e a depuração. Apenas certifique-se de e substitua-o pelo seu próprio ID do bloco de anúncios antes de publicar o app.

Para mais informações sobre como funcionam os anúncios de teste do SDK dos anúncios para dispositivos móveis, consulte Testar Google Ads.

Adicionar AdManagerAdRequest ao layout

A primeira etapa para exibir um banner é posicionar AdManagerAdView no layout do Activity ou Fragment em que você gostaria de exibir ele:

Java

private AdSize getAdSize() {
  // Determine the screen width (less decorations) to use for the ad width.
  Display display = getWindowManager().getDefaultDisplay();
  DisplayMetrics outMetrics = new DisplayMetrics();
  display.getMetrics(outMetrics);

  float density = outMetrics.density;

  float adWidthPixels = adContainerView.getWidth();

  // If the ad hasn't been laid out, default to the full screen width.
  if (adWidthPixels == 0) {
    adWidthPixels = outMetrics.widthPixels;
  }

  int adWidth = (int) (adWidthPixels / density);
  return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
}

private void loadBanner() {
  
  // Create a new ad view.
  AdManagerAdView adView = new AdManagerAdView(this);
  adView.setAdSizes(getAdSize());
  adView.setAdUnitId("/6499/example/adaptive-banner");

  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

  // Start loading the ad in the background.
  AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
  adView.loadAd(adRequest);
}

Kotlin


// Determine the screen width (less decorations) to use for the ad width.
// If the ad hasn't been laid out, default to the full screen width.
private val adSize: AdSize
  get() {
    val display = windowManager.defaultDisplay
    val outMetrics = DisplayMetrics()
    display.getMetrics(outMetrics)

    val density = outMetrics.density

    var adWidthPixels = binding.adViewContainer.width.toFloat()
    if (adWidthPixels == 0f) {
      adWidthPixels = outMetrics.widthPixels.toFloat()
    }

    val adWidth = (adWidthPixels / density).toInt()
    return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
  }

private fun loadBanner() {
  
  // Create a new ad view.
  val adView = AdManagerAdView(this)
  adView.adSizes = adSize
  adView.adUnitId = "/6499/example/adaptive-banner"

  // Create an ad request.
  val adRequest = AdManagerAdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

Carregar um anúncio

Quando a AdManagerOpenCensus estiver pronta, a próxima etapa será carregar um anúncio. Isso é feito com o loadAd() na classe AdManagerAdView. É necessário um AdManagerAdRequest , que contém informações sobre o tempo de execução, como informações de segmentação, sobre um única solicitação de anúncio.

Aqui está um exemplo que mostra como carregar um anúncio no método onCreate() de um Activity:

Java

private void loadBanner() {
  // Create a new ad view.
  adView = new AdManagerAdView(this);
  adView.setAdUnitId(AD_UNIT);
  adView.setAdSize(getAdSize());
  
  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

  // Start loading the ad in the background.
  AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
  adView.loadAd(adRequest);
}

Kotlin

private fun loadBanner() {
  // This is an ad unit ID for a test ad. Replace with your own banner ad unit ID.
  adView.adUnitId = "/6499/example/banner"
  adView.setAdSize(adSize)
  
  // Create an ad request.
  val adRequest = AdManagerAdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

Se o anúncio não é carregado, você não precisa solicitar outro explicitamente como desde que você tenha configurado o bloco de anúncios para ser atualizado. o SDK dos anúncios para dispositivos móveis do Google respeita qualquer taxa de atualização especificada no Ad Manager interface da Web do usuário. Se não tiver ativado a atualização, você precisará emitir um novo solicitação.

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

Eventos de anúncio

É possível detectar vários eventos no ciclo de vida do anúncio, incluindo carregamento, impressão e clique do anúncio, além de eventos de abertura e fechamento do anúncio. É recomendado para definir a chamada de retorno antes de carregar o banner.

Java

AdManagerAdView.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

AdManagerAdView.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 substituíveis AdListener corresponde a um evento no ciclo de vida de um anúncio.

Métodos substituíveis
onAdClicked() O onAdClicked() é invocado quando é registrado um clique em um anúncio.
onAdClosed() O onAdClosed() é invocado quando um usuário retorna ao aplicativo depois de visualizar o URL de destino. Seu app pode usá-lo para retomar atividades suspensas ou e realizar qualquer outro trabalho necessário para ficar pronto para interação.
onAdFailedToLoad() O onAdFailedToLoad() é o único que inclui um parâmetro. O parâmetro de erro do tipo LoadAdError descreve o erro. Para mais informações, consulte a página Depuração de erros de carregamento de anúncios Documentação.
onAdImpression() O onAdImpression() quando uma impressão é registrada para um anúncio.
onAdLoaded() O onAdLoaded() é executado quando um anúncio termina de carregar. Se você quiser adiar como adicionar o AdManagerAdView à sua atividade ou fragmento até ter certeza de que um anúncio será carregado, por você pode fazer isso aqui.
onAdOpened() O onAdOpened() é invocado quando um anúncio abre uma sobreposição que cobre a tela.

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

Para que os anúncios em vídeo sejam exibidos com sucesso nas visualizações do seu anúncio de banner, o hardware acceleration precisa estar ativado.

A aceleração de hardware é ativada por padrão, mas alguns apps podem optar por desativá-la reimplantá-lo. Se isso se aplica ao seu aplicativo, recomendamos ativar a aceleração de hardware para Classes Activity 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 método android:hardwareAccelerated para o atributo <application> e <activity> elementos em AndroidManifest.xml. O exemplo abaixo ativa 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 a página sobre aceleração de hardware guia para saber mais informações sobre opções para controlar a aceleração de hardware. Observe que visualizações de anúncios individuais não podem ser ativadas para aceleração de hardware se a atividade está desativada, então a própria atividade precisa ter a aceleração de hardware ativada.

Contagem manual de impressões

A contagem manual de impressões é compatível somente com vendas diretas e internas campanhas com criativos programados diretamente no Ad Manager. Não deve ser usadas para preenchimento ou anúncios de redes de terceiros. Para mais detalhes, consulte Contagem impressões e cliques.

É possível enviar pings de impressão manualmente para o Ad Manager se você tiver as condições de quando uma impressão deve ser registrada. Para isso, ative uma AdManagerAdRequest para impressões manuais antes de carregar um anúncio:

Java

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build();

Kotlin

val adRequest = AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build()

Quando você determina que um anúncio foi retornado com sucesso e está na tela, é possível registrar uma impressão manualmente:

Java

{ ad_view }.recordManualImpression();

Kotlin

AdManagerAdView.recordManualImpression()

Eventos de apps

Com os eventos de aplicativos, você pode criar anúncios que enviam mensagens ao código do aplicativo. O app podem realizar ações com base nessas mensagens.

É possível detectar eventos específicos de aplicativos do Ad Manager usando AppEventListener. Esses eventos podem ocorrer a qualquer momento durante o ciclo de vida do anúncio, mesmo antes onAdLoaded() é chamado.

Java

public interface AppEventListener {
  void onAppEvent(String name, String info);
}

Kotlin

interface AppEventListener {
    fun onAppEvent(name: String, info: String)
}

void onAppEvent(String name, String info) é chamado quando ocorre um evento no app. em um anúncio. Esta interface pode ser implementada pela sua atividade ou por qualquer outro objeto:

Java

import com.google.android.gms.ads.admanager.*;

public class BannerExample extends Activity implements AppEventListener {
}

Kotlin

import com.google.android.gms.ads.admanager.*

class BannerExample : Activity(), AppEventListener {
}

e, em seguida, transmitidos para AdManagerAdView:

Java

AdManagerAdView.setAppEventListener(this);

Kotlin

AdManagerAdView.appEventListener = this

Confira um exemplo de como mudar a cor do plano de fundo do seu app dependendo de um evento do app com um nome de cor:

Java

@Override
public void onAppEvent(String name, String info) {
  if ("color".equals(name)) {
    if ("green".equals(info)) {
      // Set background color to green.
    } else if ("blue".equals(info)) {
      // Set background color to blue.
    } else {
      // Set background color to black.
    }
  }
}

Kotlin

override fun onAppEvent(name: String?, info: String?) {
    if (name == "color") {
        when (info) {
            "green" -> {
                // Set background color to green.
            }
            "blue" -> {
                // Set background color to blue.
            }
            else -> {
                // Set background color to black.
            }
        }
    }
}

E este é o criativo correspondente que envia mensagens coloridas de evento de aplicativo para o listener:

<html>
<head>
  <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      // Send a color=green event when ad loads.
      admob.events.dispatchAppEvent("color", "green");

      document.getElementById("ad").addEventListener("click", function() {
        // Send a color=blue event when ad is clicked.
        admob.events.dispatchAppEvent("color", "blue");
      });
    });
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad">Carpe diem!</div>
</body>
</html>

Veja o exemplo de eventos de aplicativo do Ad Manager para uma implementação de eventos de aplicativo na App de demonstração da API.

Java Kotlin (em inglês)

Outros recursos

Exemplos no GitHub

  • Exemplo de anúncios de banner adaptativo fixo: Java | Kotlin (em inglês)
  • Demonstração de recursos avançados: Java | Kotlin (em inglês)

Próximas etapas

Banners que podem ser recolhidos

Os anúncios de banner que podem ser recolhidos são exibidos inicialmente como um banner maior com um botão para recolher o anúncio em um tamanho menor. Considere usar para otimizar ainda mais seu desempenho. Consulte anúncios de banner que podem ser recolhidos para mais detalhes.

Banners adaptativos inline

Os banners adaptativos inline são maiores e mais altos em comparação com os adaptativos fixos. banners. Eles têm altura variável e podem ter a mesma altura da tela do dispositivo. É recomendável usar os banners adaptativos inline em vez dos anúncios de banner adaptativo fixo para que posicionam anúncios de banner em conteúdo rolável. Consulte Anúncios inline adaptáveis de banner para mais detalhes.

Explorar outros tópicos