São anúncios em tela cheia que cobrem a interface de um app até serem fechados pelo usuário. Normalmente, elas aparecem em pontos de transição natural no fluxo de um app, como entre atividades ou durante a pausa entre níveis de um jogo. Quando um app mostra um anúncio intersticial, o usuário tem a opção de tocar nele e continuar até o destino ou fechá-lo e retornar ao app.
Este guia mostra como integrar anúncios intersticiais em um app iOS.
Pré-requisitos
- SDK dos anúncios para dispositivos móveis do Google 8.0.0 ou mais recente.
- Leia o Guia explicativo.
Sempre teste com anúncios de teste
Ao criar e testar seus apps, use anúncios de teste em vez de anúncios de produção ativos. Sua conta poderá ser suspensa se isso não for feito.
A maneira mais fácil de carregar anúncios de teste é usar nosso ID de bloco de anúncios de teste dedicado para intersticiais do iOS:
/6499/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 próprio ID do 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 os anúncios intersticiais são:
- Carregar um anúncio.
- Registre-se para callbacks.
- Exiba o anúncio e processe o evento de recompensa.
Carregar um anúncio
É possível carregar um anúncio usando o método estático loadWithAdManagerAdUnitID:request:completionHandler:
na classe GAMInterstitialAd
. O método de carregamento requer o ID do bloco de anúncios, um objeto GAMRequest
e um gerenciador de conclusão que é chamado quando o carregamento do anúncio é concluído ou apresenta falha. O objeto GAMInterstitialAd
carregado é fornecido como um parâmetro no gerenciador de conclusão. O exemplo abaixo mostra como carregar um
GAMInterstitialAd
na classe ViewController
.
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController {
private var interstitial: GAMInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
do {
interstitial = try await GAMInterstitialAd.load(
withAdUnitID: "/6499/example/interstitial", request: GAMRequest())
} 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:@"/6499/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 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 ele é 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()
do {
interstitial = try await GAMInterstitialAd.load(
withAdUnitID: "/6499/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.")
}
}
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:@"/6499/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 é exibido, 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 dispensado.
Exibir o anúncio
Os 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.
Confira um exemplo de como fazer isso em um dos métodos de ação em um
UIViewController
:
Swift
guard let interstitial = interstitial else {
return print("Ad wasn't ready.")
}
// The UIViewController parameter is an optional.
interstitial.present(fromRootViewController: nil)
Objective-C
if (self.interstitial) {
// The UIViewController parameter is nullable.
[self.interstitial presentFromRootViewController:nil];
} else {
NSLog(@"Ad wasn't ready");
}
Se nenhum anúncio estiver sendo retornado, com a resposta de erro "Erro de solicitação: não há anúncios a serem exibidos", verifique se o item de linha tem um criativo segmentado para o tamanho correto. Os tamanhos intersticiais são 320 x 480 e 480 x 320 para smartphones e 1.024 x 768 e 768 x 1.024 para tablets. Se um dispositivo não for grande o suficiente para caber em um tamanho de 1024 x 768 ou 768 x 1024, ele voltará para o tamanho de 320 x 480 ou 480 x 320.
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. Esses pontos são criados pela conclusão de uma tarefa em um app, como o compartilhamento de uma imagem ou a conclusão de um nível do jogo. Como o usuário espera uma interrupção na ação, é fácil apresentar um anúncio intersticial sem atrapalhar a experiência. Considere em quais pontos do fluxo de trabalho do seu app você exibirá anúncios intersticiais e como o usuário provavelmente responderá.
- Lembre-se de pausar a ação ao exibir um anúncio intersticial.
- Há vários tipos diferentes de anúncios intersticiais: de texto, gráficos, em vídeo e muito mais. É importante garantir que, quando o app exibir um
anúncio intersticial, ele também suspenda o uso de alguns recursos para permitir
que o anúncio os aproveite. Por exemplo, quando você fizer a chamada para mostrar um
anúncio intersticial, pause qualquer saída de áudio produzida pelo app.
É possível retomar a reprodução de sons no
manipulador de eventos
adDidDismissFullScreenContent:
, que vai ser invocado quando o usuário terminar de interagir com o anúncio. Além disso, considere interromper temporariamente qualquer tarefa de computação intensa (como um loop de jogo) enquanto o anúncio estiver sendo exibido. Isso garante que o usuário não se depare com gráficos lentos ou sem resposta nem vídeos travados. - Espere um tempo de carregamento adequado.
- Assim como exibir anúncios intersticiais no momento certo, também é importante garantir que o usuário não precise esperar o carregamento deles. Carregar o anúncio com antecedência antes da exibição pode garantir que seu app tenha um anúncio intersticial totalmente carregado e pronto no momento da exibição.
- Não sobrecarregue o usuário com anúncios.
- Embora aumentar a frequência de anúncios intersticiais no app possa parecer uma ótima maneira de aumentar a receita, também pode prejudicar a experiência do usuário e reduzir as taxas de cliques. Garanta que os usuários não sejam interrompidos com tanta frequência de modo que não possam mais aproveitar o app.
- Não use o callback de conclusão do 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 precisar exibi-lo. Em seguida, verifique o método
canPresentFromRootViewController:error:
emGAMInterstitialAd
para descobrir se ele está pronto para ser mostrado.
Exemplos no GitHub
- Exemplo de anúncios intersticiais: Swift | Objective-C
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.