Os anúncios intersticiais são anúncios de tela cheia que cobrem a interface do app host. Normalmente, eles são exibidos em pontos de transição naturais no fluxo de um app, como durante a pausa entre os níveis de um jogo. Quando um app mostra um anúncio intersticial, o usuário pode tocar no anúncio e continuar 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
- Concluir o Guia para iniciantes.
Criar um anúncio intersticial
A primeira etapa para mostrar 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 que oInterstitialAd
precisa carregar anúncios.
É importante observar como diferentes blocos de anúncios são usados, dependendo da plataforma. Você vai precisar usar uma unidade de anúncio do iOS para fazer solicitações de anúncios no iOS e uma unidade de anúncio do Android para fazer solicitações no Android.
Sempre teste com anúncios de teste
O código de exemplo acima contém um ID do bloco de anúncios, e você pode solicitar anúncios com ele. Ele foi configurado especificamente para retornar anúncios de teste em vez de anúncios de produção para cada solicitação, o que garante a segurança do uso.
No entanto, depois de registrar um app na interface da AdMob e criar seus próprios IDs de bloco de anúncios para uso no app, você precisará configurar seu dispositivo como um de teste durante o desenvolvimento. Isso é extremamente importante. Testar com anúncios reais (mesmo que você nunca toque neles) é contra a política da AdMob e pode fazer com que sua conta seja suspensa. Consulte Anúncios de teste para saber como garantir que você sempre receba anúncios de teste ao desenvolver.
Carregar um anúncio
Depois que a InterstitialAd
é instanciada, a próxima etapa é carregar um anúncio.
Isso é feito com o método loadAd()
na classe InterstitialAd
. Ele usa
um argumento AdRequest
, que contém informações 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:
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); }
Mostrar o anúncio
Os anúncios intersticiais precisam ser exibidos durante pausas naturais no fluxo de um app.
Entre as fases 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 e chame show()
.
O anúncio intersticial do exemplo de código anterior pode ser mostrado 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, você pode se conectar a vários
eventos no ciclo de vida do anúncio: carregamento, abertura, fechamento e assim por diante. Ouça
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 evento especiais. Ele transmite uma
instância de HandleAdFailedToLoadEventArgs
com um Message
que descreve 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 é mostrado, cobrindo a tela do dispositivo. |
OnAdClosed |
Esse método é invocado quando o anúncio intersticial é fechado porque o usuário toca no ícone de fechamento ou usa o botão "Voltar". Se o app pausar a saída de áudio ou o loop do jogo, esse é um ótimo lugar para retomar. |
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 será mais usado e que a memória que ele ocupa pode ser recuperada. A falha na chamada desse 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. A conclusão de uma tarefa em um app, como compartilhar uma imagem ou passar de fase em um jogo, cria um ponto como esse. Como o usuário espera uma pausa na ação, é mais fácil apresentar um anúncio intersticial sem prejudicar a experiência dele. Considere em quais pontos do fluxo de trabalho do app você vai exibir anúncios intersticiais e qual a probabilidade de o usuário reagir.
- Lembre-se de pausar a ação ao exibir um anúncio intersticial.
- Há vários tipos diferentes de anúncios intersticiais: de texto, de imagem,
em vídeo e muito mais. É importante garantir que, quando o app exibe um
anúncio intersticial, ele também suspende o uso de alguns recursos para permitir que o anúncio
faça uso deles. Por exemplo, ao fazer uma chamada para exibir um
anúncio intersticial, interrompa a saída de áudio produzida pelo app.
Você pode 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 interromper temporariamente tarefas de computação intensa (como um loop de jogo) enquanto o anúncio está sendo exibido. Isso garante que o usuário não experimente gráficos lentos ou não responsivos ou vídeos travando. - Conceda tempo suficiente para o carregamento.
- Tão importante quanto garantir a exibição de anúncios intersticiais em um
momento adequado, é importante garantir que o usuário não precise esperar
o carregamento. Carregar o anúncio com antecedência chamando
loadAd()
antes de pretender chamarshow()
pode garantir que o app tenha um anúncio intersticial totalmente carregado e preparado para quando o momento de exibição chegar. - Não sobrecarregue o usuário com anúncios.
- Embora aumentar a frequência dos anúncios intersticiais no seu app possa parecer uma ótima maneira de aumentar a receita, isso também pode prejudicar a experiência do usuário e reduzir as taxas de cliques. Certifique-se de que os usuários não sejam interrompidos com muita frequência de modo que não possam mais usar o app.
Outros recursos
Amostras
- Exemplo HelloWorld uma implementação mínima de todos os formatos de anúncio