Anúncios em banner

Os anúncios de banner são anúncios gráficos ou de texto retangulares que ocupam uma posição na tela. 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ê começou a usar os anúncios para dispositivos móveis agora, saiba que eles são um bom lugar para começar. Estudo de caso.

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

Prerequisites

Conclua os Primeiros passos. Seu app Unity já deve ter o plug-in Unity dos anúncios para dispositivos móveis do Google importado.

Criar um BannerView

O primeiro passo para exibir um banner é criar um objeto BannerView em um script C# anexado a uma GameObject.

Para facilitar a integração de anúncios usando o Editor do Unity, teste a nova versão Beta dos canais de anúncios.

using System;
using UnityEngine;
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private BannerView bannerView;
    ...
    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize(initStatus => { });

        this.RequestBanner();
    }

    private void RequestBanner()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Create a 320x50 banner at the top of the screen.
        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);
    }
}

O construtor de um BannerView tem os seguintes parâmetros:

  • adUnitId: ID do bloco de anúncios da AdMob sobre o qual o BannerView deve carregar anúncios.
  • AdSize: o tamanho de anúncio da AdMob que você quer usar (consulte Tamanhos de banner para detalhes).
  • AdPosition: é a posição em que o anúncio de banner deve ser posicionado. A enumeração AdPosition lista os valores válidos para a posição do anúncio.

É importante observar como diferentes blocos de anúncios são usados, dependendo da plataforma. Você precisará usar um bloco de anúncios do iOS para fazer solicitações de anúncio no iOS e um bloco de anúncios do Android para fazer solicitações no Android.

(Opcional) Posição do anúncio personalizada

Para ter mais controle sobre onde uma BannerView é colocada na tela do que as oferecidas por valores de AdPosition, use o construtor BannerView que tem as coordenadas x e y como parâmetros:

// Create a 320x50 banner ad at coordinate (0,50) on screen.
BannerView bannerView = new BannerView(adUnitId, AdSize.Banner, 0, 50);

O canto superior esquerdo do BannerView será posicionado nos valores x e y transmitidos para o construtor, em que a origem é o canto superior esquerdo da tela.

(Opcional) Tamanhos de anúncio personalizados

Além de usar uma constante AdSize, também é possível especificar um tamanho personalizado para seu anúncio:

AdSize adSize = new AdSize(250, 250);
BannerView bannerView = new BannerView(adUnitId, adSize, AdPosition.Bottom);

Sempre usar anúncios de teste

A amostra de código acima contém um código de bloco de anúncios, e você pode solicitar anúncios com ele. Ele foi configurado especialmente para retornar anúncios de teste em vez de anúncios de produção a cada solicitação. Isso facilita o uso.

No entanto, depois de registrar um aplicativo na IU da AdMob e criar seus próprios IDs de blocos de anúncios para uso no aplicativo, será necessário configurar explicitamente o dispositivo como um dispositivo de teste durante o desenvolvimento. Isso é muito importante. Testar com anúncios reais (mesmo que você nunca toque neles) é contra a política da AdMob e pode causar a suspensão da sua conta. Leia Anúncios de teste para ver informações sobre como garantir que você sempre receba anúncios de teste ao desenvolver.

Carregar um anúncio

Depois que o BannerView for instanciado, a próxima etapa será carregar um anúncio. Isso é feito com o método loadAd() na classe BannerView. Ele usa um argumento 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.

Veja um exemplo que mostra como carregar um anúncio:

...
    private void RequestBanner()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Create a 320x50 banner at the top of the screen.
        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        this.bannerView.LoadAd(request);
    }
...

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

Eventos de anúncio

Para personalizar ainda mais o comportamento do seu anúncio, é possível acompanhar vários eventos no ciclo de vida do anúncio: ao carregar, abrir, fechar e assim por diante. Detecte esses eventos registrando uma delegação para o EventHandler apropriado, como mostrado abaixo.

...
using System;
using UnityEngine;
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private BannerView bannerView;

    public void Start()
    {
        this.RequestBanner();
    }

    private void RequestBanner()
    {

        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);

        // Called when an ad request has successfully loaded.
        this.bannerView.OnAdLoaded += this.HandleOnAdLoaded;
        // Called when an ad request failed to load.
        this.bannerView.OnAdFailedToLoad += this.HandleOnAdFailedToLoad;
        // Called when an ad is clicked.
        this.bannerView.OnAdOpening += this.HandleOnAdOpened;
        // Called when the user returned from the app after an ad click.
        this.bannerView.OnAdClosed += this.HandleOnAdClosed;
        // Called when the ad click caused the user to leave the application.
        this.bannerView.OnAdLeavingApplication += this.HandleOnAdLeavingApplication;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        this.bannerView.LoadAd(request);
    }

    public void HandleOnAdLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLoaded event received");
    }

    public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print("HandleFailedToReceiveAd event received with message: "
                            + args.Message);
    }

    public void HandleOnAdOpened(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdOpened event received");
    }

    public void HandleOnAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdClosed event received");
    }

    public void HandleOnAdLeavingApplication(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLeavingApplication event received");
    }
}

O evento OnAdFailedToLoad contém argumentos de evento especiais. Ele transmite uma instância de HandleAdFailedToLoadEventArgs com um Message que descreve o erro:

public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
  MonoBehaviour.print("Banner failed to load: " + args.Message);
  // Handle the ad failed to load event.
};
Evento do anúncioDescrição
OnAdLoaded O evento OnAdLoaded é executado quando o anúncio termina de carregar.
OnAdFailedToLoad O evento OnAdFailedToLoad é invocado quando um anúncio não é carregado. O parâmetro Message descreve o tipo de falha que ocorreu.
OnAdOpening Esse método é invocado quando o usuário toca em um anúncio. Se você estiver usando um pacote de análise para rastrear os cliques, este é um bom lugar para registrar um.
OnAdClosed Quando um usuário retorna ao aplicativo depois de visualizar o URL de destino do anúncio, esse método é invocado. O app pode usá-lo para retomar atividades suspensas ou realizar qualquer outro trabalho necessário para se preparar para a interação.
OnAdLeavingApplication Esse método é invocado após onAdOpened, quando o clique de um usuário abre outro app (como a Google Play Store), colocando o app atual em segundo plano.

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

Tamanho em dp (L x A) Descrição Disponibilidade Constante AdSize
320 x 50 Banner padrão 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 em tamanho original do IAB Tablets FULL_BANNER
728 x 90 Quadro de Liderança 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
Saiba mais sobre banners adaptativos para substituir os banners inteligentes.

Limpar anúncios de banner

Quando terminar de BannerView, chame o método Destroy() antes de descartar sua referência:

bannerView.Destroy();

Isso notifica o plug-in de que o objeto não é mais usado e que a memória ocupada pode ser recuperada. A falha em chamar esse método resulta em vazamentos de memória.

Outros recursos

Amostras

Histórias de sucesso