Os anúncios intersticiais são de tela cheia e cobrem a interface do app até serem fechados pelo usuário. Geralmente, eles são exibidos em momentos de transição naturais no fluxo de um app, como no meio de atividades ou durante pausas entre os níveis de um jogo. Quando um app mostra um anúncio intersticial, o usuário pode tocar nele e continuar até o destino ou fechar e voltar ao app. Estudo de caso.
Neste guia, mostramos como integrar anúncios intersticiais a um app iOS.
Pré-requisitos
- Leia o guia para iniciantes.
Sempre usar anúncios de teste
Ao criar e testar seus apps, use anúncios de teste em vez de anúncios de produção ativos. Caso contrário, sua conta poderá ser suspensa.
A maneira mais fácil de carregar esses anúncios é usando o ID do nosso bloco de anúncios de teste dedicado
para intersticiais do iOS:
ca-app-pub-3940256099942544/4411468910
Ele foi configurado especialmente para retornar anúncios de teste em todas as solicitações, e você pode usá-lo nos seus próprios apps durante a programação, os testes e a depuração. Só não se esqueça de substituí-lo pelo ID do seu bloco de anúncios antes de publicar o app.
Para mais informações sobre como os anúncios de teste do SDK para Dispositivos Móveis funcionam, consulte Anúncios de teste.
Implementação
As principais etapas para integrar anúncios intersticiais são:
- Carregar um anúncio.
- Registrar callbacks.
- Mostrar o anúncio.
Carregar um anúncio
É possível fazer isso usando o método
load(adUnitID:request)
na classe
GADInterstitialAd
.
Swift
fileprivate func loadInterstitial() async {
do {
interstitial = try await InterstitialAd.load(
with: "ca-app-pub-3940256099942544/4411468910", request: Request())
interstitial?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
SwiftUI
import GoogleMobileAds
class InterstitialViewModel: NSObject, FullScreenContentDelegate {
private var interstitialAd: InterstitialAd?
func loadAd() async {
do {
interstitialAd = try await InterstitialAd.load(
with: "ca-app-pub-3940256099942544/4411468910", request: Request())
interstitialAd?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
Objective-C
[GADInterstitialAd
loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
request:[GADRequest request]
completionHandler:^(GADInterstitialAd *ad, NSError *error) {
if (error) {
NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
return;
}
self.interstitial = ad;
self.interstitial.fullScreenContentDelegate = self;
}];
Registrar callbacks
Para receber notificações sobre eventos de apresentação, atribua
GADFullScreenContentDelegate to the
à propriedade "fullScreenContentDelegate" do
anúncio retornado:
Swift
interstitial?.fullScreenContentDelegate = self
SwiftUI
interstitialAd?.fullScreenContentDelegate = self
Objective-C
self.interstitial.fullScreenContentDelegate = self;
O protocolo GADFullScreenContentDelegate
processa callbacks quando o anúncio
é apresentado com ou sem sucesso e quando é dispensado. O código a seguir mostra como implementar o protocolo:
Swift
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
print("\(#function) called with error: \(error.localizedDescription)")
// Clear the interstitial ad.
interstitial = nil
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
// Clear the interstitial ad.
interstitial = nil
}
SwiftUI
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func ad(
_ ad: FullScreenPresentingAd,
didFailToPresentFullScreenContentWithError error: Error
) {
print("\(#function) called")
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
// Clear the interstitial ad.
interstitialAd = nil
}
Objective-C
- (void)adDidRecordImpression:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidRecordClick:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)ad:(id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(NSError *)error {
NSLog(@"%s called with error: %@", __PRETTY_FUNCTION__, error.localizedDescription);
// Clear the interstitial ad.
self.interstitial = nil;
}
- (void)adWillPresentFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adWillDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
// Clear the interstitial ad.
self.interstitial = nil;
}
GADInterstitialAd
é um objeto de uso único. Isso
significa que, depois que um anúncio intersticial é mostrado, ele não pode ser exibido novamente. Uma prática
recomendada é carregar outro anúncio intersticial no método
adDidDismissFullScreenContent:
em GADFullScreenContentDelegate
para
que o próximo comece a ser carregado assim que o anterior for
dispensado.
Mostrar o anúncio
Os anúncios intersticiais devem ser exibidos durante pausas naturais no fluxo de um app, como entre as fases de um jogo ou depois que o usuário conclui uma tarefa.
Swift
ad.present(from: self!)
SwiftUI
Ouça eventos de interface na visualização para determinar quando mostrar o anúncio.
var body: some View {
// ...
}
.onChange(of: countdownTimer.isComplete) { newValue in
showGameOverAlert = newValue
}
.alert(isPresented: $showGameOverAlert) {
Alert(
title: Text("Game Over"),
message: Text("You lasted \(countdownTimer.countdownTime) seconds"),
dismissButton: .cancel(
Text("OK"),
action: {
viewModel.showAd()
}))
Apresente o anúncio intersticial do modelo de visualização:
func showAd() {
guard let interstitialAd = interstitialAd else {
return print("Ad wasn't ready.")
}
interstitialAd.present(from: nil)
}
Objective-C
[self.interstitial presentFromRootViewController:self];
Práticas recomendadas
- Avalie se os anúncios intersticiais são o tipo certo para seu app.
- Eles funcionam melhor em aplicativos com momentos de transição natural. Esses momentos são criados pela conclusão de uma tarefa, como o compartilhamento de uma imagem ou o término de um nível do jogo. Como o usuário espera uma pausa na ação, fica fácil apresentar um intersticial sem prejudicar a experiência. Analise em quais pontos do fluxo do app você exibirá os intersticiais e como o usuário provavelmente responderá a eles.
- Não se esqueça de pausar a ação ao exibir um anúncio intersticial.
- Há vários tipos diferentes de anúncios intersticiais: texto, imagem, vídeo e muito mais. Quando seu app exibir um
anúncio desse tipo, ele também precisa suspender o uso de alguns recursos para que o anúncio
possa aproveitá-los. Por exemplo, quando você fizer a chamada para mostrar um
anúncio intersticial, pause qualquer saída de áudio produzida pelo app.
Você pode retomar a reprodução de sons no processador de eventos
adDidDismissFullScreenContent:
, que será invocado quando o usuário terminar de interagir com a publicidade. Além disso, considere a suspensão temporária de qualquer tarefa computacional intensa (como loop de jogo) enquanto o anúncio estiver sendo exibido. Isso garante que o usuário não veja gráficos travados/sem resposta ou vídeos com renderização lenta. - Permita um tempo de carregamento adequado.
- Garantir que os anúncios intersticiais sejam exibidos no momento adequado é tão importante quanto garantir que o usuário não tenha que esperar o carregamento deles. Carregar o anúncio com antecedência antes de mostrá-lo é uma maneira de confirmar que o app terá uma publicidade pronta para ser exibida quando chegar a hora.
- Não exiba anúncios em excesso aos usuários.
- Embora aumentar a frequência de anúncios intersticiais no seu app possa parecer uma ótima forma de gerar mais receita, isso também prejudica a experiência do usuário e diminui as taxas de cliques. Se os usuários forem interrompidos com muita frequência, eles não vão gostar do app.
- Não use o callback de conclusão do carregamento para mostrar o intersticial.
- Isso leva a uma experiência ruim para o usuário. O ideal é pré-carregar o anúncio antes
de precisar mostrá-lo. Em seguida, verifique o método
canPresentFromRootViewController:error:
emGADInterstitialAd
para saber se ele está pronto para ser exibido.
Outros recursos
Exemplos no GitHub
Confira exemplos completos de anúncios intersticiais na sua linguagem preferida:
Tutoriais em vídeo do Mobile Ads Garage
Histórias de sucesso
Próximas etapas
- Crie seu próprio bloco de anúncios intersticiais na interface da AdMob, caso ainda não tenha feito isso.
- Saiba mais sobre a segmentação de anúncios e as diretrizes para anúncios intersticiais.
- Saiba mais sobre a privacidade do usuário.