Anuncios de vídeo bonificados (API antigua)

Los anuncios de vídeo bonificados son anuncios de vídeo a pantalla completa que dan recompensas dentro de la aplicación a los usuarios que los ven enteros.

En esta guía, te mostramos cómo integrar anuncios de vídeo bonificados de AdMob en una aplicación 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, te recomendamos que hagas 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 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 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. Recuerda sustituirlo por el ID de uno de tus bloques de anuncios cuando vayas a 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.

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 anuncios de vídeo bonificados. Debes asignar 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 el protocolo 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 anuncio de vídeo bonificado

El objeto rewardBasedVideoAdDidClose: es un lugar idóneo para cargar un nuevo anuncio de vídeo bonificado después de mostrar el 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