Anuncios nativos

Los anuncios nativos son recursos publicitarios que se presentan a los usuarios a través de componentes de la interfaz que son nativos de la plataforma. Se muestran mediante las mismas clases que ya utilizas en tus storyboards y se les puede aplicar formato para que se ajusten al diseño visual de tu aplicación. Cuando se carga un anuncio nativo, la aplicación recibe un objeto que contiene sus recursos, y la aplicación (en vez del SDK) es responsable de mostrarlos, a diferencia de lo que ocurre con otros formatos, que no permiten personalizar la apariencia de los anuncios.

Con esta guía, aprenderás a usar el SDK de anuncios de Google para móviles para implementar anuncios nativos en aplicaciones iOS y descubrirás algunos aspectos importantes que deberás tener en cuenta durante el proceso.

A grandes rasgos, debes hacer dos cosas para implementar anuncios nativos correctamente: cargarlos mediante el SDK y, a continuación, mostrar su contenido en tu aplicación. En esta página te indicamos cómo cargar anuncios con el SDK.

Requisitos previos

Comprobar siempre las aplicaciones con anuncios de prueba

Antes de comenzar, recuerda que, al crear y probar tus aplicaciones, debes utilizar siempre anuncios de prueba en lugar de anuncios reales que se estén publicando. De lo contrario, podríamos suspender tu cuenta.

Para cargar anuncios de prueba, lo más sencillo es usar nuestro ID de bloque de anuncios de prueba para anuncios nativos avanzados de iOS:

ca-app-pub-3940256099942544/3986624511

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 Anuncios de prueba.

Cargar anuncios

Los anuncios nativos pueden tener dos formatos definidos por el sistema: de descarga de aplicaciones y de contenido.

Ambos tipos de anuncio se representan mediante la clase GADUnifiedNativeAd. Una instancia de esta clase contiene los recursos de los anuncios nativos. En función de cuál sea el tipo de anuncio representado por GADUnifiedNativeAd, algunos campos no se rellenarán (es decir, su valor será nil).

Los anuncios nativos se cargan mediante objetos GADAdLoader, que envían mensajes a sus objetos delegados de acuerdo con el protocolo GADAdLoaderDelegate.

Inicializar el cargador de anuncios

Para cargar un anuncio es necesario inicializar el cargador. En el siguiente fragmento de código puedes ver cómo inicializar un objeto GADAdLoader:

Swift

adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    rootViewController: self,
    adTypes: [ kGADAdLoaderAdTypeUnifiedNative ],
    options: [ ... ad loader options objects ... ])
adLoader.delegate = self

Objective‑C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    rootViewController:rootViewController
               adTypes:@[ ... ad type constants ... ]
               options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;

Necesitarás un ID de bloque de anuncios (puedes usar el ID de prueba), constantes para transferir la matriz adTypes y especificar los formatos nativos que quieras solicitar, y cualquier opción que quieras definir en el parámetro options. Encontrarás la lista de los posibles valores del parámetro options en la página de opciones de los anuncios nativos.

La matriz adTypes debe contener esta constante:

Implementar el objeto delegado del cargador de anuncios

El objeto delegado del cargador de anuncios debe implementar protocolos específicos según el tipo de anuncio. En los anuncios nativos unified:

  • El protocolo GADUnifiedNativeAdLoaderDelegate incluye un mensaje que se envía al objeto delegado cuando se carga un anuncio nativo unificado:

    Swift

    public func adLoader(_ adLoader: GADAdLoader,
        didReceive nativeAd: GADUnifiedNativeAd)
    

    Objective‑C

    - (void)adLoader:(GADAdLoader *)adLoader
        didReceiveNativeAd:(GADUnifiedNativeAd *)nativeAd;
    

Solicitar anuncios

Después de inicializar el objeto GADAdLoader, llama a su método loadRequest: para solicitar un anuncio:

Swift

adLoader.load(GADRequest())

Objective‑C

[self.adLoader loadRequest:[GADRequest request]];

El método loadRequest: de GADAdLoader acepta los mismos objetos GADRequest como banners e intersticiales. Puedes utilizar objetos de solicitud para añadir información sobre la segmentación, tal como harías con otros tipos de anuncios.

Cuándo solicitar anuncios

Las aplicaciones que muestran anuncios nativos pueden solicitarlos con antelación a la publicación en sí. En muchos casos, es la práctica recomendada. Por ejemplo, si la aplicación muestra una lista de elementos entre los que también hay anuncios nativos, se pueden cargar los de toda la lista, pero algunos solo se mostrarán cuando el usuario desplace la vista y otros ni siquiera llegarán a aparecer.

Aunque precargar anuncios es una buena técnica, si hay anuncios antiguos que llevan sin mostrarse demasiado tiempo, lo ideal es quitarlos. Si pasa más de una hora y aún no se han mostrado objetos de anuncios nativos concretos, descártalos y sustitúyelos por anuncios nuevos mediante otra solicitud.

Determinar cuándo ha finalizado la carga

Después de que una aplicación realice una llamada a loadRequest:, podrá obtener los resultados de la solicitud mediante llamadas a:

Una solicitud de un solo anuncio dará lugar a una llamada a uno de estos métodos.

Una solicitud de varios anuncios dará lugar a, al menos, una retrollamada a los métodos anteriores, pero no a más del número máximo de anuncios solicitados.

Además, GADAdLoaderDelegate ofrece la retrollamada a adLoaderDidFinishLoading. Este método de objeto delegado indica que un cargador ha terminado de cargar anuncios y la solicitud no devolverá más anuncios ni errores. Más abajo tienes un ejemplo de cómo puedes usarlo para cargar varios anuncios nativos a la vez:

Swift

class ViewController: UIViewController, GADUnifiedNativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdsOptions = GADMultipleAdsAdLoaderOptions()
    multipleAdsOptions.numberOfAds = 5

    adLoader = GADAdLoader(adUnitID: YOUR_AD_UNIT_ID, rootViewController: self,
        adTypes: [GADAdLoaderAdType.unifiedNative],
        options: [multipleAdsOptions])
    adLoader.delegate = self
    adLoader.load(GADRequest())
  }

  func adLoader(_ adLoader: GADAdLoader,
                didReceive nativeAd: GADUnifiedNativeAd) {
    // A unified native ad has loaded, and can be displayed.
  }

  func adLoaderDidFinishLoading(_ adLoader: GADAdLoader) {
      // The adLoader has finished loading ads, and a new request can be sent.
  }

}

Objective‑C

@interface ViewController () <GADUnifiedNativeAdLoaderDelegate, GADVideoControllerDelegate>
@property(nonatomic, strong) GADAdLoader *adLoader;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
      [[GADMultipleAdsAdLoaderOptions alloc] init];
  multipleAdsOptions.numberOfAds = 5;

  self.adLoader = [[GADAdLoader alloc] initWithAdUnitID:YOUR_AD_UNIT_ID
          rootViewController:self
                     adTypes:@[kGADAdLoaderAdTypeUnifiedNative]
                     options:@[multipleAdsOptions]];
  self.adLoader.delegate = self;
  [self.adLoader loadRequest:[GADRequest request]];
}

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveUnifiedNativeAd:(GADUnifiedNativeAd *)nativeAd {
   // A unified native ad has loaded, and can be displayed.
}

- (void)adLoaderDidFinishLoading:(GADAdLoader *) adLoader {
  // The adLoader has finished loading ads, and a new request can be sent.
}

@end

Gestionar solicitudes que no se han hecho correctamente

Los protocolos anteriores amplían el protocolo GADAdLoaderDelegate, que define el mensaje que se envía cuando no se pueden cargar anuncios. Puedes usar el objeto GADRequestError para determinar la causa del error.

Swift

public func adLoader(_ adLoader: GADAdLoader,
    didFailToReceiveAdWithError error: GADRequestError)

Objective‑C

- (void)adLoader:(GADAdLoader *)adLoader
    didFailToReceiveAdWithError:(GADRequestError *)error;

Recibir notificaciones de eventos de anuncios nativos

Para recibir notificaciones de eventos relacionados con las interacciones con anuncios nativos, define la propiedad de objeto delegado del anuncio nativo:

Swift

nativeAd.delegate = self

Objective‑C

nativeAd.delegate = self;

Luego, implementa GADUnifiedNativeAdDelegate para recibir las siguientes llamadas del objeto delegado:

Swift

func nativeAdDidRecordImpression(_ nativeAd: GADUnifiedNativeAd) {
  // The native ad was shown.
}

func nativeAdDidRecordClick(_ nativeAd: GADUnifiedNativeAd) {
  // The native ad was clicked on.
}

func nativeAdWillPresentScreen(_ nativeAd: GADUnifiedNativeAd) {
  // The native ad will present a full screen view.
}

func nativeAdWillDismissScreen(_ nativeAd: GADUnifiedNativeAd) {
  // The native ad will dismiss a full screen view.
}

func nativeAdDidDismissScreen(_ nativeAd: GADUnifiedNativeAd) {
  // The native ad did dismiss a full screen view.
}

func nativeAdWillLeaveApplication(_ nativeAd: GADUnifiedNativeAd) {
  // The native ad will cause the application to become inactive and
  // open a new application.
}

Objective‑C

- (void)nativeAdDidRecordImpression:(GADUnifiedNativeAd *)nativeAd {
  // The native ad was shown.
}

- (void)nativeAdDidRecordClick:(GADUnifiedNativeAd *)nativeAd {
  // The native ad was clicked on.
}

- (void)nativeAdWillPresentScreen:(GADUnifiedNativeAd *)nativeAd {
  // The native ad will present a full screen view.
}

- (void)nativeAdWillDismissScreen:(GADUnifiedNativeAd *)nativeAd {
  // The native ad will dismiss a full screen view.
}

- (void)nativeAdDidDismissScreen:(GADUnifiedNativeAd *)nativeAd {
  // The native ad did dismiss a full screen view.
}

- (void)nativeAdWillLeaveApplication:(GADUnifiedNativeAd *)nativeAd {
  // The native ad will cause the application to become inactive and
  // open a new application.
}

Mostrar anuncios

Después de cargar el anuncio, solo queda mostrárselo a los usuarios. Para aprender a hacerlo, consulta nuestra guía sobre los anuncios nativos avanzados.