Anúncios intersticiais

Selecione a plataforma: Android iOS Unity Flutter

Os anúncios intersticiais ficam em tela cheia e cobrem a interface do app até serem fechados pelo usuário. Geralmente, eles são exibidos em momentos de transição natural no fluxo de um app, como no meio de atividades ou durante pausas entre os níveis de um jogo. Quando um anúncio intersticial aparece no app, o usuário pode tocar nele e continuar até o destino ou fechá-lo e voltar para o 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 no iOS:
ca-app-pub-3940256099942544/4411468910

Ele foi configurado especialmente para retornar anúncios de teste em todas as solicitações e pode ser usado nos seus próprios apps durante a programação, os testes e a depuração. Substitua pelo ID do seu bloco de anúncios antes de publicar o aplicativo.

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

Confira as principais etapas para integrar anúncios intersticiais:

  1. Carregue um anúncio.
  2. Registre callbacks.
  3. Exiba o anúncio.

Carregar um anúncio

É possível carregar um anúncio 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 a propriedade GADFullScreenContentDelegate to thefullScreenContentDelegate 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

Detecte eventos da 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 dentro de um aplicativo, 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 seu aplicativo você vai exibir os anúncios intersticiais e como o usuário provavelmente reagirá a eles.
Pause 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. É importante garantir que, quando seu aplicativo exibir um desses anúncios, ele também suspenda 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. É possível retomar a reprodução de sons no manipulador 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 animações lentas ou travadas ou vídeos com renderização lenta.
Permita um tempo de carregamento adequado.
Garantir que os anúncios intersticiais sejam exibidos no momento apropriado é tão importante quanto garantir que o usuário não tenha que esperar o carregamento deles. Carregar o anúncio antes que ele seja exibido é uma maneira de confirmar que o app tem a publicidade pronta para aparecer 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 aplicativo 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 prejudica a experiência do 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