Anuncios intersticiales

Los anuncios intersticiales son anuncios de pantalla completa que cubren la interfaz de una app hasta que el usuario los cierra. Por lo general, se muestran en puntos de transición naturales en el flujo de una app, como entre actividades o durante la pausa entre niveles de un juego. Cuando en una app se muestra un anuncio intersticial, el usuario puede presionarlo y continuar hasta su destino, o bien cerrarlo y volver a la app. Caso de éxito.

En esta guía, se explica cómo integrar anuncios intersticiales en una aplicación para iOS.

Requisitos previos

  • SDK de anuncios de Google para dispositivos móviles 8.0.0 o una versión posterior.
  • Completa la Guía de introducción.

Realizar pruebas siempre con anuncios de prueba

Cuando compiles y pruebes tus apps, asegúrate de usar anuncios de prueba en lugar de anuncios publicados en producción. De lo contrario, podría suspenderse tu cuenta.

La forma más fácil de cargar anuncios de prueba es usar nuestro ID de unidad de anuncios de prueba exclusivo para los anuncios intersticiales de iOS:
ca-app-pub-3940256099942544/4411468910

Se configuró especialmente para mostrar anuncios de prueba en cada solicitud, y puedes usarlo en tus propias apps mientras codificas, pruebas y depuras. Solo asegúrate de reemplazarlo con tu propio ID de unidad de anuncios antes de publicar la app.

Consulta Anuncios de prueba para obtener más información sobre cómo funcionan estos anuncios del SDK de anuncios para dispositivos móviles.

Implementación

Estos son los pasos principales para integrar anuncios intersticiales:

  1. Carga un anuncio.
  2. Regístrate para recibir devoluciones de llamada.
  3. Muestra el anuncio y controla el evento de recompensa.

Carga un anuncio

La carga de un anuncio se logra con el método estático loadWithAdUnitID:request:completionHandler: en la clase GADInterstitialAd. El método de carga requiere tu ID de unidad de anuncios, un objeto GADRequest y un controlador de finalización al que se llama cuando la carga de anuncios falla o se realiza correctamente. 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 GADInterstitialAd en tu clase 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;
  }];
}

Cómo registrarse para usar las devoluciones de llamada

Para recibir notificaciones sobre eventos de presentación, debes implementar el protocolo GADFullScreenContentDelegate y asignarlo a la propiedad fullScreenContentDelegate del anuncio que se muestra. El protocolo GADFullScreenContentDelegate controla las devoluciones de llamada cuando el anuncio se presenta de manera correcta o incorrecta, y cuando se descarta. En el siguiente código, se muestra cómo implementar el protocolo y asignarlo al anuncio:

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 es un objeto de uso único. Esto significa que, una vez que se muestra un anuncio intersticial, no se puede volver a mostrar. Una práctica recomendada es cargar otro anuncio intersticial en el método adDidDismissFullScreenContent: en GADFullScreenContentDelegate para que el siguiente anuncio intersticial comience a cargarse en cuanto se descarte el anterior.

Muestra el anuncio

Los anuncios intersticiales deben mostrarse durante las pausas naturales en el flujo de una aplicación. Entre los niveles de un juego es un buen ejemplo o después de que el usuario completa una tarea. Este es un ejemplo de cómo hacerlo en uno de los métodos de acción en un 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");
  }
}

Prácticas recomendadas

Determina si los anuncios intersticiales son el tipo de anuncio adecuado para tu app.
Los anuncios intersticiales funcionan mejor en apps con puntos de transición naturales. La conclusión de una tarea dentro de una app, como compartir una imagen o completar un nivel de un juego, crea ese punto. Como el usuario espera una pausa en la acción, es fácil presentar un anuncio intersticial sin interrumpir su experiencia. Asegúrate de considerar en qué puntos del flujo de trabajo de tu app mostrarás anuncios intersticiales y cómo es probable que responda el usuario.
Recuerda pausar la acción cuando muestres un anuncio intersticial.
Existen distintos tipos de anuncios intersticiales: de texto, con imágenes y de video, entre otros. Es importante asegurarse de que, cuando tu app muestre un anuncio intersticial, también suspenda el uso de algunos recursos para permitir que el anuncio los aproveche. Por ejemplo, cuando realices la llamada para mostrar un anuncio intersticial, asegúrate de pausar cualquier salida de audio que produzca tu app. Puedes reanudar la reproducción de sonidos en el controlador de eventos adDidDismissFullScreenContent:, que se invocará cuando el usuario haya terminado de interactuar con el anuncio. Además, considera la opción de detener de forma temporal cualquier tarea de procesamiento intensa (como un bucle de juego) mientras se muestra el anuncio. Esto garantizará que el usuario no experimente gráficos lentos o sin respuesta, ni videos entrecortados.
Proporciona un tiempo de carga adecuado.
Así como es importante asegurarse de mostrar anuncios intersticiales en un momento apropiado, también lo es asegurarse de que el usuario no tenga que esperar a que se carguen. Si cargas el anuncio con anticipación antes de publicarlo, te asegurarás de que tu app tenga un anuncio intersticial completamente cargado cuando llegue el momento de mostrarlo.
No sobrecargues al usuario con anuncios.
Si bien aumentar la frecuencia de los anuncios intersticiales en tu app puede parecer una excelente manera de aumentar los ingresos, también puede perjudicar la experiencia del usuario y disminuir las tasas de clics. Asegúrate de que no se interrumpa a los usuarios con tanta frecuencia como para que ya no puedan disfrutar de tu app.
No uses la devolución de llamada de finalización de carga para mostrar el anuncio intersticial.
Esto puede generar una experiencia del usuario deficiente. En su lugar, precarga el anuncio antes de que tengas que mostrarlo. Luego, verifica el método canPresentFromRootViewController:error: en GADInterstitialAd a fin de averiguar si está listo para mostrarse.

Recursos adicionales

Ejemplos en GitHub

Instructivos en video de Mobile Ads Garage

Historias de éxito

Próximos pasos