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
- Importar el SDK de anuncios de Google para móviles, ya sea de forma independiente o como parte de Firebase.
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 didReceiveUnifiedNativeAd:(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
que los 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:
adLoader:didFailToReceiveAdWithError:
enGADAdLoaderDelegate
adLoader:didReceiveUnifiedNativeAd:
enGADUnifiedNativeAdLoaderDelegate
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.