Anúncios intersticiais

São anúncios em tela cheia que cobrem a interface de um app até serem fechados 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 tem a opção de tocar no anúncio e continuar até o destino ou fechar 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 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 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. Você pode usá-lo nos seus próprios apps durante a programação, o teste e a depuração. Apenas lembre-se de 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:

  1. Carregue um anúncio.
  2. Registre-se para callbacks.
  3. 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-se para callbacks

Para receber notificações de 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 sucesso ou não 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, uma vez que um anúncio intersticial é exibido, ele não pode mais aparecer. 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 as fases 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 uma UIViewController:

Swift

@IBAction func doSomething(_ sender: Any) {
  guard let interstitial = interstitial else {
    return print("Ad wasn't ready.")
  }

  // The UIViewController parameter is an optional.
  interstitial.present(fromRootViewController: nil)
}

Objective-C

- (IBAction)doSomething:(id)sender {
  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, e a resposta de erro "Erro de solicitação: nenhum anúncio para exibir" será exibida, verifique se o item de linha tem um criativo segmentado para o tamanho correto. Os tamanhos de 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 1.024 x 768 ou 768 x 1.024, ele voltará para o tamanho 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 natural. Esse ponto é criado pela conclusão de uma tarefa em um app, como compartilhamento de uma imagem ou conclusão de um nível de jogo. Como o usuário está esperando uma pausa na ação, é fácil apresentar um anúncio intersticial sem prejudicar 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 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 a chamada para mostrar um anúncio intersticial, pause qualquer saída de áudio que esteja sendo 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 qualquer tarefa de computação intensa (como um loop de jogo) enquanto o anúncio estiver sendo mostrado. Isso garantirá que o usuário não tenha gráficos lentos ou que não respondam ou vídeos com falhas.
Permita um tempo de carregamento adequado.
Tão importante quanto a exibição dos anúncios intersticiais no momento adequado é garantir que o usuário não tenha que 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 pronto na hora de mostrá-lo.
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, ele também pode prejudicar a experiência do usuário e reduzir as taxas de cliques. Confira se os usuários não são interrompidos com tanta frequência de modo que não possam mais aproveitar o uso do 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, confira o método canPresentFromRootViewController:error: em GAMInterstitialAd para descobrir se ele está pronto para ser mostrado.

Exemplos no GitHub

Próximas etapas