Anúncios intersticiais (legados)

Os anúncios intersticiais são anúncios em tela cheia que cobrem a interface do app host. Geralmente, eles são exibidos em pontos de transição naturais no fluxo de um app, como durante a pausa entre as fases de um jogo. Quando um app mostra um anúncio intersticial, o usuário tem a opção de tocar no anúncio e ir até o destino ou fechá-lo e retornar ao app. Estudo de caso.

Este guia explica como integrar anúncios intersticiais a um app Unity.

Pré-requisitos

Criar um anúncio intersticial

A primeira etapa para exibir um intersticial é criar um objeto InterstitialAd em um script anexado a um GameObject.

using GoogleMobileAds.Api;
...

private InterstitialAd interstitial;

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

    // Initialize an InterstitialAd.
    this.interstitial = new InterstitialAd(adUnitId);
}

O construtor de InterstitialAd tem o seguinte parâmetro:

  • adUnitId: o ID do bloco de anúncios da AdMob de onde InterstitialAd precisa carregar anúncios.

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

Sempre teste com anúncios de teste

O exemplo de código acima contém um ID 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 para cada solicitação, o que o torna seguro.

No entanto, depois de registrar um app na interface da AdMob e criar os próprios IDs de bloco de anúncios para uso nele, você vai precisar configurar explicitamente seu dispositivo como um dispositivo de teste durante o desenvolvimento. Isso é extremamente importante. Realizar testes com anúncios reais (mesmo que você nunca toque neles) viola a política da AdMob e pode fazer com que sua conta seja suspensa. Consulte Anúncios de teste para informações sobre como garantir que você sempre receba anúncios de teste durante o desenvolvimento.

Carregar um anúncio

Depois de instanciar o InterstitialAd, a próxima etapa é carregar um anúncio. Isso pode ser feito com o método loadAd() na classe InterstitialAd. 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.

Este é um exemplo que mostra como carregar um anúncio:

using GoogleMobileAds.Api;
...
private InterstitialAd interstitial;

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

    // Initialize an InterstitialAd.
    this.interstitial = new InterstitialAd(adUnitId);
    // Create an empty ad request.
    AdRequest request = new AdRequest.Builder().Build();
    // Load the interstitial with the request.
    this.interstitial.LoadAd(request);
}

Veicular o anúncio

Os anúncios intersticiais precisam ser exibidos durante pausas naturais no fluxo de um app. Entre os níveis de um jogo é um bom exemplo, ou depois que o usuário conclui uma tarefa. Para mostrar um intersticial, use o método isLoaded() para verificar se ele foi carregado. Em seguida, chame show().

O anúncio intersticial do exemplo de código anterior poderia ser exibido no final de um jogo, conforme demonstrado abaixo.

private void GameOver()
{
  if (this.interstitial.IsLoaded()) {
    this.interstitial.Show();
  }
}

Eventos de anúncio

Para personalizar ainda mais o comportamento do seu anúncio, conecte-se a vários eventos do ciclo de vida do anúncio: carregamento, abertura, fechamento e assim por diante. Detecte esses eventos registrando um delegado para o EventHandler apropriado, conforme mostrado abaixo.

using GoogleMobileAds.Api;
...
private InterstitialAd interstitial;

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

     // Initialize an InterstitialAd.
    this.interstitial = new InterstitialAd(adUnitId);

    // Called when an ad request has successfully loaded.
    this.interstitial.OnAdLoaded += HandleOnAdLoaded;
    // Called when an ad request failed to load.
    this.interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad;
    // Called when an ad is shown.
    this.interstitial.OnAdOpening += HandleOnAdOpening;
    // Called when the ad is closed.
    this.interstitial.OnAdClosed += HandleOnAdClosed;

    // Create an empty ad request.
    AdRequest request = new AdRequest.Builder().Build();
    // Load the interstitial with the request.
    this.interstitial.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 HandleOnAdOpening(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleAdOpening event received");
}

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

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

public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
    print("Interstitial failed to load: " + args.Message);
    // Handle the ad failed to load event.
}
Evento do anúncioDescrição
OnAdLoaded O evento OnAdLoaded é executado quando um 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 anúncio é exibido, cobrindo a tela do dispositivo.
OnAdClosed Esse método é invocado quando o anúncio intersticial é fechado devido ao toque do usuário no ícone "Fechar" ou ao botão "Voltar". Se o app pausou a saída de áudio ou o loop de jogo, esse é um ótimo lugar para retomá-lo.

Limpar anúncios intersticiais

Quando terminar de usar um InterstitialAd, chame o método Destroy() antes de descartar a referência a ele:

interstitial.Destroy();

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

Algumas práticas recomendadas

Avalie se os anúncios intersticiais são o tipo certo de anúncio para seu app.
Os anúncios intersticiais funcionam melhor em apps com pontos de transição naturais. Esses pontos são criados pela conclusão de uma tarefa em um app, como o compartilhamento de uma imagem ou a conclusão de um nível do jogo. Como o usuário espera uma interrupção na ação, é fácil apresentar um anúncio intersticial sem atrapalhar a experiência. Considere em quais pontos do fluxo de trabalho do seu app você exibirá anúncios intersticiais e como o usuário provavelmente responderá.
Lembre-se de pausar a ação ao exibir um anúncio intersticial.
Há vários tipos diferentes de anúncios intersticiais: de texto, gráficos, em vídeo e muito mais. É importante garantir que, quando o app exibir um anúncio intersticial, ele também suspenda o uso de alguns recursos para permitir que o anúncio os aproveite. Por exemplo, quando você fizer a chamada para exibir um anúncio intersticial, pause qualquer saída de áudio produzida pelo app. É possível retomar a reprodução de sons no manipulador de eventos onAdClosed(), que será invocado quando o usuário terminar de interagir com o anúncio. Além disso, considere suspender temporariamente qualquer tarefa de computação intensa (como um loop de jogo) enquanto o anúncio estiver sendo exibido. Isso garante que o usuário não veja gráficos lentos ou sem resposta nem vídeos travados.
Espere um tempo de carregamento adequado.
Assim como é importante garantir a exibição de anúncios intersticiais no momento adequado, também é importante garantir que o usuário não precise esperar o carregamento deles. Carregar o anúncio com antecedência chamando loadAd() antes da chamada show() pode garantir que seu app tenha um anúncio intersticial totalmente carregado e pronto no momento da exibição.
Não sobrecarregue o usuário com anúncios.
Embora aumentar a frequência de anúncios intersticiais no app possa parecer uma ótima maneira de aumentar a receita, também pode prejudicar a experiência do usuário e reduzir as taxas de cliques. Garanta que os usuários não sejam interrompidos com tanta frequência de modo que não possam mais aproveitar o app.

Outros recursos

Exemplos

Histórias de sucesso