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
- Leia o Guia explicativo.
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 ondeInterstitialAd
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úncio | Descriçã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 chamadashow()
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
- Exemplo do HelloWorld marcada como uma implementação mínima de todos os formatos de anúncio.