Anúncios intersticiais

Selecione a plataforma: Android iOS Unity Flutter

Os anúncios intersticiais são de tela cheia e cobrem a interface do app até serem fechados pelo usuário. Geralmente, eles são exibidos em momentos de transição naturais no fluxo de um app, como no meio de atividades ou durante pausas entre os níveis de um jogo. Quando um app mostra um anúncio intersticial, o usuário pode tocar nele e continuar até o destino ou fechar e voltar ao app. Estudo de caso.

Neste guia, mostramos como integrar anúncios intersticiais a um app iOS.

Pré-requisitos

Sempre usar anúncios de teste

Ao criar e testar seus apps, use anúncios de teste em vez de anúncios de produção ativos. Caso contrário, sua conta poderá ser suspensa.

A maneira mais fácil de carregar esses anúncios é usando o ID do nosso 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 em todas as solicitações, e você pode usá-lo nos seus próprios apps durante a programação, os testes e a depuração. Só não se esqueça de 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 para Dispositivos Móveis funcionam, consulte Anúncios de teste.

Implementação

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

  1. Carregar um anúncio.
  2. Registrar callbacks.
  3. Mostrar o anúncio.

Carregar um anúncio

É possível fazer isso usando o método load(adUnitID:request) na classe GADInterstitialAd.

Swift

fileprivate func loadInterstitial() async {
  do {
    interstitial = try await InterstitialAd.load(
      with: "ca-app-pub-3940256099942544/4411468910", request: Request())
    interstitial?.fullScreenContentDelegate = self
  } catch {
    print("Failed to load interstitial ad with error: \(error.localizedDescription)")
  }
}

SwiftUI

import GoogleMobileAds

class InterstitialViewModel: NSObject, FullScreenContentDelegate {
  private var interstitialAd: InterstitialAd?

  func loadAd() async {
    do {
      interstitialAd = try await InterstitialAd.load(
        with: "ca-app-pub-3940256099942544/4411468910", request: Request())
      interstitialAd?.fullScreenContentDelegate = self
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }

Objective-C

[GADInterstitialAd
     loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
              request:[GADRequest 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;
    }];

Registrar callbacks

Para receber notificações sobre eventos de apresentação, atribua GADFullScreenContentDelegate to the à propriedade "fullScreenContentDelegate" do anúncio retornado:

Swift

interstitial?.fullScreenContentDelegate = self

SwiftUI

interstitialAd?.fullScreenContentDelegate = self

Objective-C

self.interstitial.fullScreenContentDelegate = self;

O protocolo GADFullScreenContentDelegate processa callbacks quando o anúncio é apresentado com ou sem sucesso e quando é dispensado. O código a seguir mostra como implementar o protocolo:

Swift

func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidRecordClick(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
  print("\(#function) called with error: \(error.localizedDescription)")
  // Clear the interstitial ad.
  interstitial = nil
}

func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
  // Clear the interstitial ad.
  interstitial = nil
}

SwiftUI

func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidRecordClick(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func ad(
  _ ad: FullScreenPresentingAd,
  didFailToPresentFullScreenContentWithError error: Error
) {
  print("\(#function) called")
}

func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
  // Clear the interstitial ad.
  interstitialAd = nil
}

Objective-C

- (void)adDidRecordImpression:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)adDidRecordClick:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)ad:(id<GADFullScreenPresentingAd>)ad
    didFailToPresentFullScreenContentWithError:(NSError *)error {
  NSLog(@"%s called with error: %@", __PRETTY_FUNCTION__, error.localizedDescription);
  // Clear the interstitial ad.
  self.interstitial = nil;
}

- (void)adWillPresentFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)adWillDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)adDidDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
  // Clear the interstitial ad.
  self.interstitial = nil;
}

GADInterstitialAd é um objeto de uso único. Isso significa que, depois que um anúncio intersticial é mostrado, ele não pode ser exibido novamente. Uma prática recomendada é carregar outro anúncio intersticial no método adDidDismissFullScreenContent: em GADFullScreenContentDelegate para que o próximo comece a ser carregado assim que o anterior for dispensado.

Mostrar o anúncio

Os anúncios intersticiais devem ser exibidos durante pausas naturais no fluxo de um app, como entre as fases de um jogo ou depois que o usuário conclui uma tarefa.

Swift

ad.present(from: self!)

SwiftUI

Ouça eventos de interface na visualização 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(from: nil)
}

Objective-C

[self.interstitial presentFromRootViewController:self];

Práticas recomendadas

Avalie se os anúncios intersticiais são o tipo certo para seu app.
Eles funcionam melhor em aplicativos com momentos de transição natural. Esses momentos são criados pela conclusão de uma tarefa, como o compartilhamento de uma imagem ou o término de um nível do jogo. Como o usuário espera uma pausa na ação, fica fácil apresentar um intersticial sem prejudicar a experiência. Analise em quais pontos do fluxo do app você exibirá os intersticiais e como o usuário provavelmente responderá a eles.
Não se esqueça de pausar a ação ao exibir um anúncio intersticial.
Há vários tipos diferentes de anúncios intersticiais: texto, imagem, vídeo e muito mais. Quando seu app exibir um anúncio desse tipo, ele também precisa suspender o uso de alguns recursos para que o anúncio possa aproveitá-los. Por exemplo, quando você fizer a chamada para mostrar um anúncio intersticial, pause qualquer saída de áudio produzida pelo app. Você pode retomar a reprodução de sons no processador de eventos adDidDismissFullScreenContent:, que será invocado quando o usuário terminar de interagir com a publicidade. Além disso, considere a suspensão temporária de qualquer tarefa computacional intensa (como loop de jogo) enquanto o anúncio estiver sendo exibido. Isso garante que o usuário não veja gráficos travados/sem resposta ou vídeos com renderização lenta.
Permita um tempo de carregamento adequado.
Garantir que os anúncios intersticiais sejam exibidos no momento adequado é tão importante quanto garantir que o usuário não tenha que esperar o carregamento deles. Carregar o anúncio com antecedência antes de mostrá-lo é uma maneira de confirmar que o app terá uma publicidade pronta para ser exibida quando chegar a hora.
Não exiba anúncios em excesso aos usuários.
Embora aumentar a frequência de anúncios intersticiais no seu app possa parecer uma ótima forma de gerar mais receita, isso também prejudica a experiência do usuário e diminui as taxas de cliques. Se os usuários forem interrompidos com muita frequência, eles não vão gostar do app.
Não use o callback de conclusão do carregamento para mostrar o intersticial.
Isso leva a uma experiência ruim para o usuário. O ideal é pré-carregar o anúncio antes de precisar mostrá-lo. Em seguida, verifique o método canPresentFromRootViewController:error: em GADInterstitialAd para saber se ele está pronto para ser exibido.

Outros recursos

Exemplos no GitHub

Confira exemplos completos de anúncios intersticiais na sua linguagem preferida:

Tutoriais em vídeo do Mobile Ads Garage

Histórias de sucesso

Próximas etapas