Anúncios intersticiais

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. Estudo de caso.

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:
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. 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:

  1. Carregar 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 loadWithAdUnitID:request:completionHandler: na classe GADInterstitialAd. O método de carregamento requer o 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 apresenta 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()

    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)")
    }
  }
}

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 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: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()

    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.")
  }
}

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 é 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");
}

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: em GADInterstitialAd para descobrir se ele está pronto para ser mostrado.

Outros recursos

Exemplos no GitHub

Tutoriais em vídeo "Mobile Ads Garage"

Histórias de sucesso

Próximas etapas