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. Se não, sua conta pode ser suspensa.
A maneira mais fácil de carregar esses anúncios é usando nosso ID de bloco de anúncios de teste dedicado
para intersticiais do iOS:
/21775744923/example/interstitial
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
GAMInterstitialAd
.
Swift
fileprivate func loadInterstitial() async {
do {
interstitial = try await AdManagerInterstitialAd.load(
with: "/21775744923/example/interstitial", request: AdManagerRequest())
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
[GAMInterstitialAd loadWithAdManagerAdUnitID:@"/21775744923/example/interstitial"
request:[GAMRequest request]
completionHandler:^(GAMInterstitialAd *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
a 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;
}
GAMInterstitialAd
é 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
Detecte eventos da 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 naturais. Esses momentos são criados pela conclusão de uma tarefa dentro de um app, 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. É importante garantir que, quando seu aplicativo exibir um desses
anúncios, ele também suspenda 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 manipulador 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 apropriado é 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 se certificar 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 gera 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:
emGAMInterstitialAd
para saber se ele está pronto para ser exibido.
Exemplos no GitHub
Confira exemplos completos de anúncios intersticiais na sua linguagem preferida:
Próximas etapas
- Saiba mais sobre a segmentação de anúncios e as diretrizes para anúncios intersticiais.
- Saiba mais sobre a privacidade do usuário.