Anuncios de vídeo bonificados

Los anuncios de vídeo bonificados son anuncios de vídeo a pantalla completa que permiten a los usuarios obtener recompensas en una aplicación por verlos enteros.

En esta guía te mostramos cómo integrar anuncios de vídeo bonificados desde AdMob en una aplicación para iOS.

Requisitos previos

Solicitar un vídeo bonificado

Como GADRewardBasedVideoAd tiene un diseño de singleton, en el ejemplo siguiente se muestra una solicitud que se hace a la instancia compartida para cargar un anuncio:

Swift

GADRewardBasedVideoAd.sharedInstance().load(GADRequest(),
    withAdUnitID: "ca-app-pub-3940256099942544/1712485313")

Objective‑C

[[GADRewardBasedVideoAd sharedInstance] loadRequest:[GADRequest request]
    withAdUnitID:@"ca-app-pub-3940256099942544/1712485313"];

Para permitir que los vídeos se precarguen, recomendamos hacer la llamada de solicitud de carga lo antes posible (por ejemplo, en el método application:didFinishLaunchingWithOptions: del delegado de la aplicación).

Comprobar siempre las aplicaciones con anuncios de prueba

Cuando crees y pruebes tus aplicaciones, utiliza siempre anuncios de prueba en lugar de anuncios de producción activos. De lo contrario, podríamos suspender tu cuenta.

La forma más sencilla de cargar anuncios de prueba es usar nuestro ID de bloque de anuncios de prueba para vídeos 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 Anuncios de prueba.

Configurar notificaciones de eventos

Para configurar notificaciones de eventos, inserta la línea que se muestra en negrita antes de la llamada de solicitud de carga:

Swift

GADRewardBasedVideoAd.sharedInstance().delegate = self
GADRewardBasedVideoAd.sharedInstance().load(GADRequest(),
    withAdUnitID: "ca-app-pub-3940256099942544/1712485313")

Objective‑C

[GADRewardBasedVideoAd sharedInstance].delegate = self;
[[GADRewardBasedVideoAd sharedInstance] loadRequest:[GADRequest request]
                                       withAdUnitID:@"ca-app-pub-3940256099942544/1712485313"];

GADRewardBasedVideoAdDelegate te notifica los eventos del ciclo de vida de los vídeos bonificados. Es necesario que asignes el delegado antes de cargar un anuncio. El evento más importante de este delegado es rewardBasedVideoAd:didRewardUserWithReward:, al que se llama cuando hay que recompensar a un usuario porque ha visto un vídeo. También puedes implementar otros métodos en este delegado.

En el siguiente ejemplo se muestra cómo registrar cada uno de los eventos disponibles en GADRewardBasedVideoAdDelegate:.

Swift

func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd,
    didRewardUserWith reward: GADAdReward) {
  print("Reward received with currency: \(reward.type), amount \(reward.amount).")
}

func rewardBasedVideoAdDidReceive(_ rewardBasedVideoAd:GADRewardBasedVideoAd) {
  print("Reward based video ad is received.")
}

func rewardBasedVideoAdDidOpen(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
  print("Opened reward based video ad.")
}

func rewardBasedVideoAdDidStartPlaying(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
  print("Reward based video ad started playing.")
}

func rewardBasedVideoAdDidCompletePlaying(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
  print("Reward based video ad has completed.")
}

func rewardBasedVideoAdDidClose(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
  print("Reward based video ad is closed.")
}

func rewardBasedVideoAdWillLeaveApplication(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
  print("Reward based video ad will leave application.")
}

func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd,
    didFailToLoadWithError error: Error) {
  print("Reward based video ad failed to load.")
}

Objective‑C

- (void)rewardBasedVideoAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd
    didRewardUserWithReward:(GADAdReward *)reward {
  NSString *rewardMessage =
      [NSString stringWithFormat:@"Reward received with currency %@ , amount %lf",
          reward.type,
          [reward.amount doubleValue]];
  NSLog(rewardMessage);
}

- (void)rewardBasedVideoAdDidReceiveAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
  NSLog(@"Reward based video ad is received.");
}

- (void)rewardBasedVideoAdDidOpen:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
  NSLog(@"Opened reward based video ad.");
}

- (void)rewardBasedVideoAdDidStartPlaying:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
  NSLog(@"Reward based video ad started playing.");
}

- (void)rewardBasedVideoAdDidCompletePlaying:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
  NSLog(@"Reward based video ad has completed.");
}

- (void)rewardBasedVideoAdDidClose:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
  NSLog(@"Reward based video ad is closed.");
}

- (void)rewardBasedVideoAdWillLeaveApplication:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
  NSLog(@"Reward based video ad will leave application.");
}

- (void)rewardBasedVideoAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd
    didFailToLoadWithError:(NSError *)error {
  NSLog(@"Reward based video ad failed to load.");
}

Mostrar un vídeo bonificado

Recomendamos que el anuncio de vídeo bonificado haya terminado de cargarse antes de intentar mostrarlo. El método isReady indica que la solicitud del anuncio de vídeo bonificado se ha procesado correctamente.

Swift

if GADRewardBasedVideoAd.sharedInstance().isReady == true {
  GADRewardBasedVideoAd.sharedInstance().present(fromRootViewController: self)
}

Objective‑C

if ([[GADRewardBasedVideoAd sharedInstance] isReady]) {
  [[GADRewardBasedVideoAd sharedInstance] presentFromRootViewController:self];
}

Volver a cargar un vídeo bonificado

rewardBasedVideoAdDidClose: es un el lugar perfecto para volver a cargar un nuevo anuncio de vídeo bonificado después del anterior.

Swift

func rewardBasedVideoAdDidClose(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
  GADRewardBasedVideoAd.sharedInstance().load(GADRequest(),
      withAdUnitID: "ca-app-pub-3940256099942544/1712485313")
}

Objective‑C

- (void)rewardBasedVideoAdDidClose:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
  [[GADRewardBasedVideoAd sharedInstance] loadRequest:[GADRequest request]
           withAdUnitID:@"ca-app-pub-3940256099942544/1712485313"];
}

Otros recursos

Ejemplos de vídeos bonificados en GitHub

Swift Objective-C

Tutoriales de vídeo de la serie Mobile Ads Garage

Laboratorio de programación

Pasos siguientes