Os anúncios intersticiais são anúncios em tela cheia que cobrem a interface de um app até ser fechado pelo usuário. Normalmente, eles são exibidos em pontos de transição naturais no fluxo de um app, como entre atividades ou 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.
Neste guia, mostramos como integrar anúncios intersticiais a um app iOS.
Pré-requisitos
- SDK dos anúncios para dispositivos móveis do Google 8.0.0 ou mais recente.
- Conclua o Guia para iniciantes.
Sempre teste com anúncios de teste
Ao criar e testar seus apps, use anúncios de teste em vez de publicidade de produção ativa. Sua conta poderá ser suspensa se isso não for feito.
A maneira mais fácil de carregar anúncios de teste é usar o ID do bloco de anúncios de teste
para intersticiais do iOS:
ca-app-pub-3940256099942544/4411468910
Ele foi configurado especialmente para retornar anúncios de teste para cada solicitação, e você pode usá-lo nos seus próprios apps durante a programação, o teste e a depuração. Basta substituí-lo pelo seu próprio ID de 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.
- Registre-se para callbacks.
- Mostrar o anúncio.
Carregar um anúncio
É possível carregar um anúncio usando o
método load(adUnitID:request)
na
classe GADInterstitialAd
.
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController {
private var interstitial: GADInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
Task {
do {
interstitial = try await GADInterstitialAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
}
}
SwiftUI
import GoogleMobileAds
class InterstitialViewModel: NSObject, GADFullScreenContentDelegate {
private var interstitialAd: GADInterstitialAd?
func loadAd() async {
do {
interstitialAd = try await GADInterstitialAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
interstitialAd?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
Objective-C
@import GoogleMobileAds;
@import UIKit;
@interface ViewController ()
@property(nonatomic, strong) GADInterstitialAd *interstitial;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GADRequest *request = [GADRequest request];
[GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
request:request
completionHandler:^(GADInterstitialAd *ad, NSError *error) {
if (error) {
NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
return;
}
self.interstitial = ad;
}];
}
Registrar callbacks
Para receber notificações sobre eventos de apresentação, implemente
o protocolo GADFullScreenContentDelegate
e atribua-o à
propriedade fullScreenContentDelegate
do anúncio retornado. O
protocolo GADFullScreenContentDelegate
processa callbacks para quando o anúncio
é apresentado com ou sem sucesso e quando é dispensado. O código abaixo
mostra como implementar o protocolo e atribuir ao anúncio:
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController, GADFullScreenContentDelegate {
private var interstitial: GADInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
Task {
do {
interstitial = try await GADInterstitialAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
interstitial?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
}
/// Tells the delegate that the ad failed to present full screen content.
func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
print("Ad did fail to present full screen content.")
}
/// Tells the delegate that the ad will present full screen content.
func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad will present full screen content.")
}
/// Tells the delegate that the ad dismissed full screen content.
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad did dismiss full screen content.")
}
}
SwiftUI
Atribua a propriedade fullScreenContentDelegate
ao anúncio retornado:
interstitialAd?.fullScreenContentDelegate = self
Implemente o protocolo:
func adDidRecordImpression(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func ad(
_ ad: GADFullScreenPresentingAd,
didFailToPresentFullScreenContentWithError error: Error
) {
print("\(#function) called")
}
func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("\(#function) called")
// Clear the interstitial ad.
interstitialAd = nil
}
Objective-C
@import GoogleMobileAds;
@import UIKit;
@interface ViewController () <GADFullScreenContentDelegate>
@property(nonatomic, strong) GADInterstitialAd *interstitial;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GADRequest *request = [GADRequest request];
[GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
request: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;
}];
}
/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
NSLog(@"Ad did fail to present full screen content.");
}
/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"Ad will present full screen content.");
}
/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"Ad did dismiss full screen content.");
}
GADInterstitialAd
é um objeto de uso único. Isso
significa que, depois que um anúncio intersticial é mostrado, ele não pode ser mostrado novamente. Uma prática
recomendada é carregar outro anúncio intersticial no
método adDidDismissFullScreenContent:
em GADFullScreenContentDelegate
para
que o próximo anúncio intersticial comece a ser carregado assim que o anterior for
encerrado.
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.
Swift
guard let interstitial = interstitial else {
return print("Ad wasn't ready.")
}
// The UIViewController parameter is an optional.
interstitial.present(fromRootViewController: nil)
SwiftUI
Detecte eventos da interface no visualizador 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(fromRootViewController: nil)
}
Objective-C
if (self.interstitial) {
// The UIViewController parameter is nullable.
[self.interstitial presentFromRootViewController:nil];
} else {
NSLog(@"Ad wasn't ready");
}
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 exibir 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
gerenciador de eventos
adDidDismissFullScreenContent:
, 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 deles. Carregar o anúncio com antecedência antes de exibi-lo pode garantir que o app tenha um anúncio intersticial totalmente carregado quando chegar a hora de mostrar 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.
- Não use o callback de conclusão de carregamento para mostrar o intersticial.
- Isso pode causar uma experiência ruim para o usuário. Em vez disso, pré-carregue o anúncio antes de
precisá-lo. Em seguida, verifique o método
canPresentFromRootViewController:error:
noGADInterstitialAd
para saber se ele está pronto para ser exibido.
Outros recursos
Exemplos no GitHub
Confira os exemplos completos de anúncios intersticiais no seu idioma:
Tutoriais em vídeo da Garagem de anúncios para dispositivos móveis
Histórias de sucesso
Próximas etapas
- Crie seu próprio bloco de anúncios intersticiais na interface da AdMob.
- Saiba mais sobre a segmentação de anúncios e as diretrizes de anúncios intersticiais.
- Saiba mais sobre a privacidade do usuário.