Anuncios intersticiales

Los anuncios intersticiales son anuncios a pantalla completa que cubren la interfaz de una aplicación hasta que el usuario los cierra. Se suelen mostrar en los puntos de transición naturales de una aplicación, por ejemplo, entre distintas actividades o al pasar de un nivel a otro en un juego. Cuando una aplicación muestra un anuncio intersticial, el usuario tiene la opción de tocarlo e ir a la página de destino, o de cerrarlo y volver a la aplicación. Consulta este caso de éxito.

En esta guía aprenderás a integrar anuncios intersticiales en aplicaciones iOS.

Requisitos previos

  • Tener la versión 8.0.0 del SDK de anuncios de Google para móviles o una versión posterior.
  • Seguir la guía de introducción para importar el SDK de anuncios de Google para móviles.

Probar siempre las aplicaciones con anuncios de prueba

Cuando crees y pruebes tus aplicaciones, utiliza siempre anuncios de prueba en lugar de anuncios reales que se estén publicando. De lo contrario, podríamos suspender tu cuenta.

La forma más sencilla de cargar anuncios de prueba es usar el ID de bloque de anuncios de prueba que hemos creado para evaluar los intersticiales de iOS:
ca-app-pub-3940256099942544/4411468910

Lo hemos configurado especialmente para que devuelva anuncios de prueba a cada solicitud, y puedes usarlo mientras programas, evaluas y depuras tus propias aplicaciones. Solo tienes que sustituirlo por el ID de tu bloque de anuncios antes de publicar la aplicación.

Para obtener más información, consulta cómo funcionan los anuncios de prueba del SDK de anuncios para móviles.

Implementación

Los pasos principales para integrar anuncios intersticiales son los siguientes:

  1. Cargar un anuncio.
  2. Registrarse para recibir retrollamadas.
  3. Mostrar el anuncio y gestionar el evento de bonificación.

Cargar un anuncio

Para cargar anuncios, utiliza el método loadWithAdUnitID:request:completionHandler: estático de la clase GADInterstitialAd. El método de carga requiere el ID de tu bloque de anuncios, un objeto GADRequest y un controlador de finalización al que se llama cuando la carga de anuncios se realiza correctamente o da error. El objeto GADInterstitialAd cargado se proporciona como parámetro en el controlador de finalización. En el siguiente ejemplo se muestra cómo cargar un objeto GADInterstitialAd en tu clase 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;
  }];
}

Registrarse para recibir retrollamadas

Para recibir notificaciones de eventos de presentación, debes implementar el protocolo GADFullScreenContentDelegate y asignarlo a la propiedad fullScreenContentDelegate del anuncio devuelto. El protocolo GADFullScreenContentDelegate gestiona las retrollamadas cuando el anuncio se muestra correctamente, cuando no se puede presentar y cuando lo cierra el usuario. En el siguiente código se muestra cómo implementar el protocolo y asignarlo al anuncio:

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 es un objeto de un solo uso. Por lo tanto, una vez que un anuncio intersticial se muestra, ya no puede volver a mostrarse. Te recomendamos que cargues otro anuncio intersticial en el método adDidDismissFullScreenContent: de GADFullScreenContentDelegate, de forma que el siguiente anuncio de este tipo empiece a cargarse en cuanto el anterior se haya cerrado.

Mostrar el anuncio

Los anuncios intersticiales deben mostrarse durante las pausas naturales de una aplicación; por ejemplo, entre los diferentes niveles de un juego o cuando el usuario haya terminado una acción concreta. Más abajo se muestra un ejemplo de cómo puedes hacerlo en uno de los métodos de acción de una propiedad 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ácticas recomendadas

Plantéate si los intersticiales son el tipo de anuncio más adecuado para tu aplicación.
Los anuncios intersticiales funcionan mejor en las aplicaciones con puntos de transición naturales. Por ejemplo, al finalizar una tarea en la aplicación, como compartir una imagen o completar un nivel de un juego. En esos momentos, como el usuario espera que se produzca una interrupción en la acción, es fácil presentar un anuncio intersticial sin que su experiencia se vea afectada. Decide en qué puntos del flujo de trabajo de la aplicación se mostrarán anuncios intersticiales y analiza cómo crees que responderán los usuarios.
Recuerda pausar la acción cuando se muestra un anuncio intersticial.
Hay distintos tipos de anuncios intersticiales, como los de texto, de imagen y de vídeo. Es importante que, cuando la aplicación muestre un anuncio intersticial, se suspenda el uso de algunos recursos para que el anuncio pueda aprovecharlos. Por ejemplo, cuando hagas la llamada para mostrar un anuncio intersticial, pausa todas las salidas de audio que produzca la aplicación. La reproducción de audio se reanuda en el gestor de eventos adDidDismissFullScreenContent:, que se invocará cuando el usuario haya terminado de interactuar con el anuncio. Además, mientras se muestra el anuncio, es conveniente detener temporalmente cualquier tarea que consuma muchos recursos (como un bucle de juego). De esta forma, el usuario no se encontrará con gráficos lentos o que no respondan ni con vídeos entrecortados.
Define un tiempo de carga adecuado.
Evitar que el usuario tenga que esperar a que los anuncios intersticiales se carguen es igual de importante que mostrarlos en el momento adecuado. Para que la aplicación tenga un anuncio intersticial completamente cargado y listo cuando llegue el momento de mostrarlo, cárgalo por adelantado.
No satures a los usuarios con anuncios.
Aunque aumentar la frecuencia de los anuncios intersticiales en tu aplicación te parezca una excelente forma de aumentar los ingresos, también puede degradar la experiencia de usuario y provocar que disminuya el porcentaje de clics. Si interrumpes a los usuarios con demasiada frecuencia, no disfrutarán utilizando tu aplicación.
No uses la retrollamada de finalización de carga para mostrar el anuncio intersticial.
Hacerlo puede ser perjudicial para la experiencia de usuario. Es preferible precargar el anuncio antes de que llegue el momento de mostrarlo. A continuación, verifica el método canPresentFromRootViewController:error: en GADInterstitialAd para averiguar si está listo para mostrarse.

Recursos adicionales

Ejemplos en GitHub

Video instructivo sobre Mobile Ads Garage

Historias de éxito

Próximos pasos