Anuncios nativos

Los anuncios nativos constan de recursos que se presentan a los usuarios a través de componentes de IU que son nativos de la plataforma. Se muestran con las mismas clases que ya usas en tus storyboards, y su formato se puede adaptar al diseño visual de tu app.

Cuando se carga un anuncio nativo, tu app recibe un objeto de anuncio que contiene sus recursos, y la responsabilidad de mostrarlos recae en ella (no en el SDK de anuncios de Google para dispositivos móviles).

En términos generales, la implementación correcta de los anuncios nativos se divide en dos partes: cargar un anuncio con el SDK y, luego, mostrar el contenido del anuncio en tu app.

En esta página, se explica cómo usar el SDK para cargar anuncios nativos.

Requisitos previos

Haz siempre una comprobación con anuncios de prueba

Al compilar y verificar tus apps, asegúrate de usar anuncios de prueba en vez de anuncios activos en fase de producción.

La forma más sencilla de cargar anuncios de prueba es usar nuestro ID de unidad de anuncios de prueba exclusivo para los anuncios nativos en iOS:

/21775744923/example/native

Está configurado especialmente para devolver anuncios de prueba en cada solicitud, y puedes usarlo en tus propias apps mientras realizas tus actividades de programación, prueba y depuración. Solo asegúrate de reemplazarlo por tu propio ID de unidad de anuncios antes de publicar tu app.

Para obtener detalles sobre los anuncios de prueba del SDK de anuncios de Google para dispositivos móviles, consulta Habilita los anuncios de prueba.

Carga anuncios

Los anuncios nativos se cargan con la clase GADAdLoader, que envía mensajes a sus delegados según el protocolo GADAdLoaderDelegate.

Puedes usar el formato nativo definido por el sistema o también crear tus propios formatos de anuncios nativos personalizados, que se pueden usar para los anuncios nativos de venta directa. Los formatos personalizados te permiten pasar datos estructurados arbitrarios a tu app, y los anuncios de este tipo se representan con la clase GADCustomNativeAd.

Inicializa el cargador de anuncios

Antes de cargar un anuncio, debes inicializar el cargador de anuncios. En el siguiente código, se muestra cómo inicializar un GADAdLoader:

Swift

adLoader = AdLoader(
  adUnitID: "nativeAdUnitID",
  // The UIViewController parameter is optional.
  rootViewController: self,
  // To receive native ads, the ad loader's delegate must
  // conform to the NativeAdLoaderDelegate protocol.
  adTypes: [.native],
  // Use nil for default options.
  options: nil)

Reemplaza nativeAdUnitID por tu ID de unidad de anuncios.

Objective-C

self.adLoader =
    [[GADAdLoader alloc] initWithAdUnitID:"kNativeAdUnitID"
                       // The UIViewController parameter is optional.
                       rootViewController:self
                                  // To receive native ads, the ad loader's delegate must
                                  // conform to the NativeAdLoaderDelegate protocol.
                                  adTypes:@[ GADAdLoaderAdTypeNative ]
                                  // Use nil for default options.
                                  options:nil];

Reemplaza kNativeAdUnitID por tu ID de unidad de anuncios.

Necesitarás un ID de unidad de anuncios (puedes usar el ID de prueba); constantes para pasar en el array adTypes para especificar qué formatos nativos quieres solicitar, y cualquier opción que quieras establecer en el parámetro options. La lista de valores posibles para el parámetro options se encuentra en la página de configuración de opciones de anuncios nativos.

El array adTypes debe contener una o más de las siguientes constantes:

Implementa el delegado del cargador de anuncios

El delegado del cargador de anuncios debe implementar protocolos específicos para tu tipo de anuncio. En el caso de los anuncios nativos, el protocolo GADNativeAdLoaderDelegate incluye un mensaje que se envía al delegado cuando se carga un anuncio nativo.

Swift

func adLoader(_ adLoader: AdLoader, didReceive nativeAd: NativeAd) {
  // To be notified of events related to the native ad interactions, set the delegate property
  // of the native ad
  nativeAd.delegate = self

  // TODO: Display the native ad.
}

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader didReceiveNativeAd:(GADNativeAd *)nativeAd {
  // To be notified of events related to the native ad interactions, set the delegate property
  // of the native ad
  nativeAd.delegate = self;

  // TODO: Display the native ad.
}

El protocolo GADCustomNativeAdLoaderDelegate incluye un mensaje que se envía al delegado cuando se carga un anuncio de plantilla personalizada.

Swift

func adLoader(_ adLoader: AdLoader, didReceive customNativeAd: CustomNativeAd) {
  // To be notified of events related to the custom native ad interactions, set the delegate
  // property of the native ad
  customNativeAd.delegate = self

  // TODO: Display the custom native ad.
}

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveCustomNativeAd:(GADCustomNativeAd *)customNativeAd {
  // To be notified of events related to the custom native ad interactions, set the delegate
  // property of the native ad
  customNativeAd.delegate = self;

  // TODO: Display the custom native ad.
}

Solicita anuncios

Una vez que se inicialice tu GADAdLoader, llama a su método loadRequest: para solicitar un anuncio:

Swift

adLoader.load(AdManagerRequest())

Objective-C

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

El método loadRequest:, en GADAdLoader, acepta los mismos objetos GAMRequest que los banners y los anuncios intersticiales. Puedes usar objetos de solicitud para agregar información de segmentación, tal como lo harías con otros tipos de anuncios.

Carga varios anuncios (opcional)

Para cargar múltiples anuncios en una sola solicitud, configura el objeto GADMultipleAdsAdLoaderOptions cuando inicialices un GADAdLoader.

Swift

let multipleAdOptions = MultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5
adLoader = AdLoader(
  adUnitID: "nativeAdUnitID",
  // The UIViewController parameter is optional.
  rootViewController: self,
  adTypes: [.native],
  options: [multipleAdOptions])

Objective-C

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

self.adLoader = [[GADAdLoader alloc] initWithAdUnitID:"kNativeAdUnitID"
                                   // The UIViewController parameter is optional.
                                   rootViewController:self
                                              adTypes:@[ GADAdLoaderAdTypeNative ]
                                              options:@[ multipleAdOptions ]];

La cantidad de anuncios por solicitud se limita a cinco, y no se garantiza que el SDK devuelva la cantidad exacta de anuncios solicitados.

Todos los anuncios de Google que se devuelvan serán diferentes entre sí. Además, no se garantiza que los anuncios procedentes del inventario reservado o de compradores externos sean únicos.

No ejecutes la clase GADMultipleAdsAdLoaderOptions si utilizas la mediación, ya que las solicitudes de múltiples anuncios nativos no funcionan para los IDs de unidades de anuncios que se configuraron para la mediación.

Determina cuándo finalizó la carga

Después de que una app llama a loadRequest:, puede llamar a los siguientes métodos para obtener los resultados de la solicitud:

Una solicitud de un anuncio único generará una llamada a uno de esos métodos.

Una solicitud de varios anuncios generará, al menos, una devolución de llamada a los métodos anteriores, pero no más de la cantidad máxima de anuncios solicitados.

Además, GADAdLoaderDelegate ofrece la devolución de llamada adLoaderDidFinishLoading. Este método delegado indica que un cargador de anuncios terminó de cargar anuncios y que no se informarán otros anuncios ni errores para la solicitud. A continuación, se incluye un ejemplo de cómo usarlo cuando se cargan varios anuncios nativos al mismo tiempo:

Swift

func adLoaderDidFinishLoading(_ adLoader: AdLoader) {
  // The adLoader has finished loading ads.
}

Objective-C

- (void)adLoaderDidFinishLoading:(GADAdLoader *)adLoader {
  // The adLoader has finished loading ads.
}

Controla las solicitudes con errores

Los protocolos extienden el protocolo GADAdLoaderDelegate, el cual define un mensaje que se envía cuando no se cargan los anuncios.

Swift

func adLoader(_ adLoader: AdLoader, didFailToReceiveAdWithError error: any Error) {
  // The adLoader failed to receive an ad.
}

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader didFailToReceiveAdWithError:(NSError *)error {
  // The adLoader failed to receive an ad.
}

Recibe notificaciones sobre eventos de anuncios nativos

Para recibir notificaciones sobre eventos asociados a interacciones con el anuncio nativo, configura la propiedad de delegado del anuncio:

Swift

// Set the delegate before making an ad request.
adLoader.delegate = self

Objective-C

// Set the delegate before making an ad request.
self.adLoader.delegate = self;

Luego, implementa GADNativeAdDelegate para recibir las siguientes llamadas de delegado:

Swift

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

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

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

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

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

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

Objective-C

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

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

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

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

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

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

Prácticas recomendadas

Sigue estas reglas para cargar anuncios.

  • Las apps que usan anuncios nativos incluidos en una lista deberían almacenar previamente en caché la lista en cuestión.

  • Cuando realices el almacenamiento previo en caché de los anuncios, borra la caché y vuelve a cargarla después de una hora.

  • No vuelvas a llamar a loadRequest: en un GADAdLoader hasta que finalice la carga de la solicitud anterior, como se indica en adLoaderDidFinishLoading:.

  • Limita el almacenamiento en caché de los anuncios nativos solo a los que sean necesarios. Por ejemplo, utiliza el almacenamiento previo en caché solo para los anuncios que estén visibles en la pantalla de inmediato. Los anuncios nativos ocupan mucho espacio en memoria, por lo que almacenarlos en caché sin destruirlos genera un uso de memoria excesivo.

  • Destruye los anuncios nativos cuando ya no estén en uso.

Muestra tu anuncio

Una vez que hayas cargado un anuncio, solo tendrás que mostrarlo a los usuarios. Consulta nuestra guía de anuncios nativos avanzados para ver cómo hacerlo.