Anuncios bonificados

Los anuncios bonificados permiten a los usuarios conseguir bonificaciones en una aplicación a cambio de interactuar con ellos. En esta guía se explica cómo integrar anuncios bonificados de AdMob en aplicaciones iOS. Lee algunos casos de éxito de los clientes: caso de éxito 1 y caso de éxito 2.

Requisitos previos

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

Comprobar siempre las aplicaciones con anuncios de prueba

Cuando crees y testes 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 los anuncios bonificados de iOS:

ca-app-pub-3940256099942544/1712485313

Lo hemos configurado especialmente para devolver anuncios de prueba a cada solicitud, y puedes usarlo para programar, probar y depurar tus propias aplicaciones. Solo tienes que sustituirlo por el ID de uno de tus bloques de anuncios antes de publicar la aplicación.

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

Implementación

Los principales pasos para integrar anuncios bonificados 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 GADRewardedAd. 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 GADRewardedAd cargado se proporciona como parámetro en el controlador de finalización. En el siguiente ejemplo se muestra cómo cargar un objeto GADRewardedAd en tu clase ViewController.

Objective‑C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GADRewardedAd *rewardedAd;

@end

@implementation ViewController
- (void)loadRewardedAd {
  GADRequest *request = [GADRequest request];
  [GADRewardedAd
       loadWithAdUnitID:@"ca-app-pub-3940256099942544/4806952744"
                request:request
      completionHandler:^(GADRewardedAd *ad, NSError *error) {
        if (error) {
          NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
          return;
        }
        self.rewardedAd = ad;
        NSLog(@"Rewarded ad loaded.");
      }];
}

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:

Objective‑C

@interface ViewController ()<GADFullScreenContentDelegate>

@property(nonatomic, strong) GADRewardedAd *rewardedAd;

@end

@implementation ViewController
- (void)loadRewardedAd {
  GADRequest *request = [GADRequest request];
  [GADRewardedAd
       loadWithAdUnitID:@"ca-app-pub-3940256099942544/4806952744"
                request:request
      completionHandler:^(GADRewardedAd *ad, NSError *error) {
        if (error) {
          NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
          return;
        }
        self.rewardedAd = ad;
        NSLog(@"Rewarded ad loaded.");
        self.rewardedAd.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 presented full screen content.
- (void)adDidPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Ad did 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.");
}

GADRewardedAd es un objeto de un solo uso. Por lo tanto, no se podrán volver a mostrar los anuncios bonificados una vez que se hayan mostrado. Te recomendamos que cargues otro anuncio bonificado 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 y gestionar el evento de bonificación

Antes de mostrar un anuncio bonificado a los usuarios, debes ofrecerles explícitamente la posibilidad de elegir si quieren ver este tipo de contenido publicitario a cambio de una bonificación. Estos anuncios siempre deben ser una experiencia que los usuarios elijan de forma voluntaria.

Al mostrar el anuncio, debes proporcionar un objeto GADUserDidEarnRewardHandler para gestionar la recompensa que obtendrán los usuarios.

En el siguiente fragmento de código se muestra el mejor método para mostrar anuncios bonificados.

Objective‑C

- (void)show {
  ...
  if (self.rewardedAd) {
    [self.rewardedAd presentFromRootViewController:self
                                  userDidEarnRewardHandler:^{
                                  GADAdReward *reward =
                                      self.rewardedAd.adReward;
                                  // TODO: Reward the user!
                                }];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

Preguntas frecuentes

¿Puedo obtener detalles de la bonificación del objeto GADRewardedAd?
Sí; si necesitas saber el valor de la bonificación antes de que se realice la retrollamada a userDidEarnReward, usa la propiedad adReward de GADRewardedAd para consultarlo después de que el anuncio se haya cargado.
¿Las llamadas de inicialización tienen un tiempo de espera determinado?
Después de 10 segundos, el SDK de anuncios de Google para móviles invoca el elemento GADInitializationCompletionHandler que se haya proporcionado al método startWithCompletionHandler:, aunque la red de mediación aún no haya completado la inicialización.
¿Qué ocurre si alguna red de mediación no está lista cuando recibo la retrollamada de inicialización?

Te recomendamos que cargues los anuncios en un GADInitializationCompletionHandler. Aunque la red de mediación no esté lista, el SDK de anuncios de Google para móviles seguirá solicitándole el anuncio. Por lo tanto, aunque una red de mediación complete la inicialización tras finalizar el tiempo de espera, podrá servir solicitudes de anuncio más adelante en esa misma sesión.

Puedes seguir consultando el estado de la inicialización de todos los adaptadores a través de la sesión de tu aplicación. Solo tienes que llamar a GADMobileAds.initializationStatus.

¿Cómo puedo saber por qué una red de mediación concreta no está lista?

La propiedad description de los objetos GADAdapterStatus describe por qué un adaptador no está listo para servir solicitudes de anuncio.