Os anúncios intersticiais são anúncios em 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 para 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
- Conclua 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 os diferentes blocos de anúncios são usados, dependendo da plataforma. Você vai 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 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 durante o desenvolvimento.
Carregar um anúncio
Depois que o InterstitialAd
é instanciado, 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 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 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
- Considere 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 esse ponto. Como o usuário espera uma pausa na ação, é fácil apresentar um anúncio intersticial sem interromper a experiência. Considere em quais pontos do fluxo de trabalho do app você vai mostrar anúncios intersticiais e como o usuário provavelmente vai reagir.
- Não se esqueça de pausar a ação ao mostrar um anúncio intersticial.
- Existem vários tipos diferentes de anúncios intersticiais: texto, imagem,
vídeo e muito mais. É importante garantir que, quando o app mostra um
anúncio intersticial, ele também suspende o uso de alguns recursos para permitir que o anúncio
aproveite esses recursos. Por exemplo, ao fazer a chamada para mostrar um
anúncio intersticial, interrompa qualquer 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 intensas (como um loop de jogo) enquanto o anúncio está sendo exibido. Isso garante que o usuário não tenha gráficos lentos ou sem resposta ou vídeos com falhas. - Aguarde o tempo de carregamento adequado.
- Assim como é importante exibir anúncios intersticiais em um
momento adequado, também é importante garantir que o usuário não precise esperar
o carregamento. Carregar o anúncio com antecedência chamando
loadAd()
antes de chamarshow()
pode garantir que o app tenha um anúncio intersticial totalmente carregado pronto quando chegar a hora de exibir um. - Não inunde 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 diminuir as taxas de cliques. Verifique se os usuários não são interrompidos com tanta frequência que não conseguem mais usar o app.
Outros recursos
Amostras
- Exemplo HelloWorld uma implementação mínima de todos os formatos de anúncio