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 natural no fluxo de um app, como entre atividades ou durante uma 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.
- Concluir 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:
/21775744923/example/interstitial
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. Só não se esqueça de substituí-lo pelo seu 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:
- Carregue 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 GAMInterstitialAd
.
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController {
private var interstitial: GAMInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
Task {
do {
interstitial = try await GAMInterstitialAd.load(
withAdUnitID: "/21775744923/example/interstitial", request: GAMRequest())
} 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) GAMInterstitialAd *interstitial;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GAMRequest *request = [GAMRequest request];
[GAMInterstitialAd loadWithAdManagerAdUnitID:@"/21775744923/example/interstitial"
request:request
completionHandler:^(GAMInterstitialAd *ad, NSError *error) {
if (error) {
NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
return;
}
self.interstitial = ad;
}];
}
Registrar-se para 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 a seguir mostra como implementar o protocolo e atribuí-lo ao anúncio:
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController, GADFullScreenContentDelegate {
private var interstitial: GAMInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
Task {
do {
interstitial = try await GAMInterstitialAd.load(
withAdUnitID: "/21775744923/example/interstitial", request: GAMRequest())
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) GAMInterstitialAd *interstitial;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GAMRequest *request = [GAMRequest request];
[GAMInterstitialAd loadWithAdManagerAdUnitID:@"/21775744923/example/interstitial"
request: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;
}];
}
/// 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.");
}
GAMInterstitialAd
é 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 carregar assim que o anterior for
descartado.
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.
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
- 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 seu app exibe um
anúncio intersticial, ele também suspende o uso de alguns recursos para permitir que o anúncio
aproveite-os. 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
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 intensa (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 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 antes de exibi-lo pode garantir que o app tenha um anúncio intersticial totalmente carregado e pronto para quando o momento de exibição chegar.
- Não sobrecarregue o usuário com anúncios.
- Embora aumentar a frequência de 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 ainda possam desfrutar do uso do seu app.
- Não use o callback de conclusão de carregamento para mostrar o intersticial.
- Isso pode resultar em uma experiência ruim para o usuário. Em vez disso, pré-carregue o anúncio antes de precisar exibi-lo. Em seguida, verifique o método
canPresentFromRootViewController:error:
noGAMInterstitialAd
para saber se ele está pronto para ser exibido.
Exemplos no GitHub
Confira os exemplos completos de anúncios intersticiais no idioma de sua preferência:
Próximas etapas
- Saiba mais sobre a segmentação de anúncios e diretrizes de anúncios intersticiais.
- Saiba mais sobre a privacidade do usuário.