Anuncios nativos

Selecciona la plataforma: Android iOS Flutter Unity

Los anuncios nativos son recursos de anuncios que se presentan a los usuarios a través de componentes de IU nativos de la plataforma. Se muestran con las mismas clases que ya usas en tus guiones gráficos y se pueden 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 app (en lugar del SDK de anuncios de Google para dispositivos móviles) es responsable de mostrarlos.

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

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

Requisitos previos

Realiza siempre pruebas con anuncios de prueba

Cuando compiles y pruebes 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 realizar pruebas de carga de anuncios es utilizar nuestro ID de unidad de anuncios de prueba exclusivo para anuncios nativos en iOS:

ca-app-pub-3940256099942544/3986624511

Se configuró especialmente para devolver anuncios de prueba en cada solicitud, y puedes usarlo en tus propias apps mientras codificas, pruebas y depuras. Solo asegúrate de reemplazarlo por tu propio ID de unidad de anuncios antes de publicar tu app.

Para obtener más información sobre cómo funcionan los anuncios de prueba del SDK de anuncios de Google para dispositivos móviles, consulta 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.

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: "ca-app-pub-3940256099942544/3986624511",
    // The UIViewController parameter is optional.
    rootViewController: rootViewController,
    adTypes: [ .native ],
    options: [ ... ad loader options objects ... ])
adLoader.delegate = self

Objective-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    // The UIViewController parameter is nullable.
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;

Necesitarás un ID de unidad de anuncios (puedes usar el ID de prueba), constantes para pasar en el array adTypes y especificar qué formatos nativos deseas solicitar, y cualquier opción que desees 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 esta constante :

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

public func adLoader(_ adLoader: AdLoader,
            didReceive nativeAd: NativeAd)

Objective-C

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

Solicitar anuncios

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

Swift

adLoader.load(Request())

Objective-C

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

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

Carga varios anuncios (opcional)

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

Swift

let multipleAdOptions = MultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    // The UIViewController parameter is optional.
    rootViewController: self,
    adTypes: [ .native ],
    options: [ multipleAdOptions ])

Objective-C

GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
    [[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    // The UIViewController parameter is nullable.
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ multipleAdsOptions ]];

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í, aunque no se garantiza que los anuncios del inventario reservado o de los compradores externos sean únicos.

No uses la clase GADMultipleAdsAdLoaderOptions si utilizas la mediación, ya que, actualmente, las solicitudes de varios anuncios nativos no funcionan para los IDs de bloques de anuncios que se configuraron para la mediación.

Cómo determinar cuándo finalizó la carga

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

Una solicitud de un solo anuncio 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 del 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 muestra un ejemplo de cómo usarlo cuando se cargan varios anuncios nativos al mismo tiempo:

Swift

class ViewController: UIViewController, NativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdOptions = MultipleAdsAdLoaderOptions()
    multipleAdOptions.numberOfAds = 5;
    adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
        // The UIViewController parameter is optional.
        rootViewController: rootViewController,
        adTypes: [ .native ],
        options: [ multipleAdOptions ])

    adLoader.delegate = self
    adLoader.load(Request())
  }

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

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

}

Objective-C

@interface ViewController () <GADNativeAdLoaderDelegate, 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:@"ca-app-pub-3940256099942544/3986624511"
      // The UIViewController parameter is nullable.
      rootViewController:rootViewController
                 adTypes:@[ GADAdLoaderAdTypeNative ]
                 options:@[ multipleAdsOptions ]];

  self.adLoader.delegate = self;
  [self.adLoader loadRequest:[GADRequest request]];
}

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd {
  // A 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

Cómo controlar solicitudes con errores

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

Swift

public func adLoader(_ adLoader: AdLoader,
    didFailToReceiveAdWithError error: NSError)

Objective-C

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

Recibe notificaciones sobre eventos de anuncios nativos

Para recibir notificaciones de eventos relacionados con las interacciones con el anuncio nativo, configura la propiedad delegate del anuncio nativo:

Swift

nativeAd.delegate = self

Objective-C

nativeAd.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 cuando cargues anuncios.

  • Las apps que usan anuncios nativos en una lista deben almacenar en caché previamente la lista de anuncios.

  • Cuando realices la precarga de 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 anuncios nativos solo a lo que sea necesario. Por ejemplo, cuando se realiza el almacenamiento previo en caché, solo se almacenan en caché los anuncios que son visibles de inmediato en la pantalla. Los anuncios nativos tienen una gran huella de memoria, y almacenarlos en caché sin destruirlos genera un uso excesivo de la memoria.

  • Destruye los anuncios nativos cuando ya no los uses.

Mostrar tu anuncio

Una vez que hayas cargado un anuncio, solo te quedará mostrarlo a tus usuarios. Visita nuestra guía avanzada sobre anuncios nativos para saber cómo hacerlo.