Los anuncios nativos son recursos de anuncios que se presentan a los usuarios a través de componentes de la IU nativos de la plataforma. Se muestran con las mismas clases que ya usas en tus storyboards y se puede darles formato para que coincidan con el diseño visual de tu app.
Cuando se carga un anuncio nativo, tu app recibe un objeto de anuncio que contiene sus elementos, y la app (en lugar del SDK de anuncios de Google para dispositivos móviles) es responsable de mostrarlos.
En términos generales, existen dos partes para implementar con éxito los anuncios nativos: cargar un anuncio mediante el SDK y luego mostrar el contenido del anuncio en su aplicación.
En esta página, se muestra cómo usar el SDK para cargar anuncios nativos.
Requisitos previos
- Completar la Guía de introducción
Realice pruebas siempre con anuncios de prueba
Cuando compiles y pruebes tus apps, asegúrate de usar anuncios de prueba en lugar de anuncios de producción publicados.
La forma más fácil de cargar anuncios de prueba es usar nuestro ID de unidades de anuncios de prueba dedicado para los anuncios nativos en iOS:
ca-app-pub-3940256099942544/3986624511
Se configuró especialmente para mostrar anuncios de prueba en cada solicitud, y puedes usarlo en tus propias apps mientras codificas, pruebas y depuras. Solo asegúrate de reemplazarlo con 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 los anuncios móviles de Google, consulta Anuncios de prueba.
Cargando 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, debe inicializar el cargador de anuncios.
En el siguiente código, se muestra cómo inicializar un GADAdLoader
:
Swift
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
rootViewController: self,
adTypes: [ .native ],
options: [ ... ad loader options objects ... ])
adLoader.delegate = self
Objective‑C
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
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 el array adTypes
a fin de especificar los formatos nativos que deseas solicitar y las opciones que desees configurar en el parámetro options
. La lista de valores posibles para el parámetro options
se encuentra en la página sobre la 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: GADAdLoader,
didReceive nativeAd: GADNativeAd)
Objective‑C
- (void)adLoader:(GADAdLoader *)adLoader
didReceiveNativeAd:(GADNativeAd *)nativeAd;
Solicitar anuncios
Una vez que se inicialice su GADAdLoader
, llame a su método loadRequest:
para solicitar un anuncio:
Swift
adLoader.load(GADRequest())
Objective‑C
[self.adLoader loadRequest:[GADRequest request]];
El método loadRequest:
en GADAdLoader
acepta los mismos objetos GADRequest
que los anuncios intersticiales y de banners. Puedes usar objetos de solicitud para agregar información de segmentación, como lo harías con otros tipos de anuncios.
Cargar varios anuncios (opcional)
Para cargar varios anuncios en una sola solicitud, configura el objeto GADMultipleAdsAdLoaderOptions
cuando inicialices un GADAdLoader
.
Swift
let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
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"
rootViewController:rootViewController
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ multipleAdsOptions ]];
La cantidad de anuncios por solicitud se limita a cinco, y no se garantiza que el SDK muestre la cantidad exacta de anuncios solicitados.
Los anuncios de Google que se muestren 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 usas la mediación, ya que las solicitudes de varios anuncios nativos no funcionan actualmente para los ID de unidades de anuncios que se configuraron a fin de realizar la mediación.
Cómo determinar cuándo terminó de cargarse
Después de que una app llama a loadRequest:
, puede obtener los resultados de la solicitud mediante llamadas a la siguiente función:
adLoader:didFailToReceiveAdWithError:
enGADAdLoaderDelegate
adLoader:didReceiveNativeAd:
enGADNativeAdLoaderDelegate
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 delegado indica que un cargador de anuncios terminó de cargar anuncios y que no se informarán otros anuncios o errores para la solicitud. A continuación, se muestra un ejemplo de cómo utilizarlo cuando se cargan varios anuncios nativos a la vez:
Swift
class ViewController: UIViewController, GADNativeAdLoaderDelegate {
var adLoader: GADAdLoader!
override func viewDidLoad() {
super.viewDidLoad()
let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
rootViewController: self,
adTypes: [ .native ],
options: [ multipleAdOptions ])
adLoader.delegate = self
adLoader.load(GADRequest())
}
func adLoader(_ adLoader: GADAdLoader,
didReceive nativeAd: GADNativeAd) {
// A 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 () <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"
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 manejar solicitudes con errores
Los protocolos anteriores extienden el protocolo GADAdLoaderDelegate
, que define un mensaje enviado cuando no se cargan los anuncios.
Swift
public func adLoader(_ adLoader: GADAdLoader,
didFailToReceiveAdWithError error: NSError)
Objective‑C
- (void)adLoader:(GADAdLoader *)adLoader
didFailToReceiveAdWithError:(NSError *)error;
Cómo recibir notificaciones de eventos de anuncios nativos
Para recibir notificaciones de eventos relacionados con las interacciones con anuncios nativos, configura la propiedad delegada del anuncio nativo:
Swift
nativeAd.delegate = self
Objective‑C
nativeAd.delegate = self;
Luego, implementa
GADNativeAdDelegate
para recibir las siguientes llamadas delegadas:
Swift
func nativeAdDidRecordImpression(_ nativeAd: GADNativeAd) {
// The native ad was shown.
}
func nativeAdDidRecordClick(_ nativeAd: GADNativeAd) {
// The native ad was clicked on.
}
func nativeAdWillPresentScreen(_ nativeAd: GADNativeAd) {
// The native ad will present a full screen view.
}
func nativeAdWillDismissScreen(_ nativeAd: GADNativeAd) {
// The native ad will dismiss a full screen view.
}
func nativeAdDidDismissScreen(_ nativeAd: GADNativeAd) {
// The native ad did dismiss a full screen view.
}
func nativeAdWillLeaveApplication(_ nativeAd: GADNativeAd) {
// 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 aplicaciones que usan anuncios nativos en una lista deben almacenar en caché la lista de anuncios previamente.
Cuando guarde anuncios en caché, borre la caché y vuelva a cargarlos después de una hora.
No llames a
loadRequest:
en un objetoGADAdLoader
hasta que la primera solicitud termine de cargarse.
Muestra tu anuncio
Una vez que cargues un anuncio, lo único que queda es mostrarlo a tus usuarios. Consulta nuestra guía de anuncios nativos avanzados para ver cómo hacerlo.