Anúncios intersticiais

São anúncios de tela cheia que cobrem a interface de um aplicativo até serem fechados 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 tem a opção de tocar no anúncio e continuar no destino ou fechar o anúncio e retornar ao app. Estudo de caso.

Este guia mostra como integrar anúncios intersticiais a um app iOS.

Pré-requisitos

Sempre faça testes 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 do bloco de anúncios de teste dedicado para intersticiais do iOS:
ca-app-pub-3940256099942544/4411468910

Ele foi especialmente configurado para retornar anúncios de teste para cada solicitação, e você pode usar os anúncios em seus próprios aplicativos durante a programação, teste e depuração. Basta 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 de anúncios para dispositivos móveis funcionam, consulte Anúncios de teste.

Implementação

As principais etapas para integrar anúncios intersticiais são:

  1. Carregue um anúncio.
  2. Registrar para callbacks.
  3. Exiba o anúncio e gerencie o evento de recompensa.

Carregar um anúncio

É possível carregar um anúncio usando o método estático loadWithAdUnitID:request:completionHandler: na classe GADInterstitialAd. O método de carregamento exige um ID do bloco de anúncios, um objeto GADRequest e um gerenciador de conclusão que é chamado quando o carregamento do anúncio é concluído ou falha. O objeto GADInterstitialAd carregado é fornecido como um parâmetro no gerenciador de conclusão. O exemplo abaixo mostra como carregar um GADInterstitialAd na classe ViewController.

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()
    let request = GADRequest()
    GADInterstitialAd.load(withAdUnitID: "ca-app-pub-3940256099942544/4411468910",
                                request: request,
                      completionHandler: { [self] ad, error in
                        if let error = error {
                          print("Failed to load interstitial ad with error: \(error.localizedDescription)")
                          return
                        }
                        interstitial = ad
                      }
    )
  }
}

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 para callbacks

Para receber notificações de eventos de apresentação, é necessário implementar o protocolo GADFullScreenContentDelegate e o atribuir à propriedade fullScreenContentDelegate do anúncio retornado. O protocolo GADFullScreenContentDelegate processa callbacks quando o anúncio é apresentado com sucesso ou não e quando é dispensado. O código a seguir mostra como implementar o protocolo e o atribuir ao anúncio:

Swift

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()
    let request = GADRequest()
    GADInterstitialAd.load(withAdUnitID: "ca-app-pub-3940256099942544/4411468910",
                                request: request,
                      completionHandler: { [self] ad, error in
                        if let error = error {
                          print("Failed to load interstitial ad with error: \(error.localizedDescription)")
                          return
                        }
                        interstitial = ad
                        interstitial?.fullScreenContentDelegate = self
                      }
    )
  }

  /// 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

@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 é exibido, ele não pode mais ser exibido. 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 são 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. Veja um exemplo de como fazer isso em um dos métodos de ação em um UIViewController:

Swift

@IBAction func doSomething(_ sender: Any) {
  if interstitial != nil {
    interstitial.present(fromRootViewController: self)
  } else {
    print("Ad wasn't ready")
  }
}

Objective-C

- (IBAction)doSomething:(id)sender {
  ...
  if (self.interstitial) {
    [self.interstitial presentFromRootViewController:self];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

Práticas recomendadas

Avalie se os anúncios intersticiais são o tipo certo para seu app.
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 concluir uma fase do jogo, cria esse ponto. Como o usuário espera uma interrupção na ação, é fácil apresentar um anúncio intersticial sem interromper a experiência. Considere em que pontos do fluxo de trabalho do app você exibirá anúncios intersticiais e como o usuário provavelmente vai responder.
Lembre-se de pausar a ação ao exibir 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 exibir um anúncio intersticial, ele também suspenda o uso de alguns recursos para permitir que o anúncio possa aproveitá-los. Por exemplo, quando você fizer uma chamada para exibir um anúncio intersticial, pause qualquer saída de áudio que estiver sendo produzida pelo app. Você pode retomar os sons reproduzidos no manipulador de eventos adDidDismissFullScreenContent:, que será invocado quando o usuário terminar de interagir com o anúncio. Além disso, considere a interrupção temporária de qualquer tarefa 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 que não respondem ou vídeos travados.
Aguarde um tempo de carregamento adequado.
Exatamente como é importante garantir a exibição de anúncios intersticiais em um momento adequado, é importante garantir que o usuário não precise aguardar 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 quando chegar a hora de mostrar um.
Não sobrecarregue os usuários com anúncios.
Aumentar a frequência dos anúncios intersticiais no seu app pode parecer uma ótima maneira de aumentar a receita, mas 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 podem mais aproveitar o uso do app.
Não use o callback de conclusão de carregamento para mostrar o intersticial.
Isso pode prejudicar a experiência do usuário. Em vez disso, pré-carregue o anúncio antes da exibição. Em seguida, verifique o método canPresentFromRootViewController:error: em GADInterstitialAd para descobrir se ele está pronto para ser mostrado.

Outros recursos

Exemplos no GitHub

Tutoriais em vídeo do Mobile Ads Garage

Histórias de sucesso

Próximas etapas