Mostrar anuncios nativos en iOS
Información general
Los anuncios nativos le ofrecen la posibilidad de crear anuncios personalizados que coincidan con el aspecto del resto de la aplicación. En este artículo se describe mobile SDK Native Ads API en un nivel alto e incluye un ejemplo de uso.
Las redes nativas que se admiten a través de la mediación para anuncios nativos son:
- Google AdMob y Google DoubleClick para publicadores (Google DFP)
Para publicar anuncios nativos, enviará una "solicitud de anuncio nativo" y recibirá una "respuesta de anuncios nativos", como se explica en la sección siguiente.
Nota:
Mantenga una referencia a los ANNativeAdRequest
objetos y ANNativeAdResponse
que cree; de lo contrario, pasarán del ámbito y provocarán un comportamiento inesperado.
Proceso
- Configure un objeto de solicitud y establezca algunas de sus propiedades, como el identificador de ubicación y si se debe cargar previamente la imagen de icono del anuncio.
- Si lo desea, establezca el renderer_id para este objeto NativeAdRequest. (Para obtener más información sobre renderer_id vea Native Layout Service). El renderer_id debe especificarse para vastxml, likes, downloads, saleprice, phone, address, display URL to be returned in the NativeAdResponse.
- Suponiendo que la solicitud se realiza correctamente, cargamos los recursos de anuncios nativos de la respuesta en la vista y la registramos para poder realizar un seguimiento de las interacciones del usuario, como los clics.
Solicitud
En primer lugar, configuramos el objeto de solicitud y establecemos algunas de sus propiedades, como el identificador de ubicación y si se va a cargar previamente la imagen de icono del anuncio:
ANNativeAdRequest *request = [[ANNativeAdRequest alloc] init];
request.placementId = @"123456";
request.rendererId = 123;
request.gender = ANGenderMale;
request.shouldLoadIconImage = YES;
request.shouldLoadMainImage = YES;
request.delegate = self;
[request loadAd];
Respuesta
Suponiendo que la solicitud se realiza correctamente, cargamos los recursos de anuncios nativos de la respuesta en la vista y la registramos para poder realizar un seguimiento de las interacciones del usuario, como los clics:
- (void)adRequest:(ANNativeAdRequest *)request didReceiveResponse:(ANNativeAdResponse *)response {
// (code which loads the view)
MyDummyView *view;
view.title.text = response.title;
view.text.text = response.body;
view.iconImageView.image = response.iconImage;
view.mainImageView.image = response.mainImage;
[view.callToActionButton setTitle:response.callToAction forState:UIControlStateNormal];
response.delegate = self;
[response registerViewForTracking:view
withRootViewController:self
clickableViews:@[view.callToActionButton, view.mainImageView]
error:nil];
}
En esta respuesta de ejemplo, usamos varios elementos de un anuncio nativo:
- Un título
- Imagen de icono
- Imagen del anuncio principal
- Bodytext
- Botón de "llamada a la acción" en el que el usuario puede hacer clic para convertir
Campos admitidos en Nativo
A partir de la versión 5.0 del SDK móvil, la compatibilidad con recursos nativos se alinea con la configuración de las creatividades nativas en la aplicación.
Si sigue usando Nativo heredado en la aplicación, tendrá que pasar a "Nuevo" Nativo para las creatividades.
A continuación se muestra una lista completa de los recursos nativos admitidos en los SDK.
Recurso | ¿Pre 5.0 compatible? | ¿Se admite Post 5.0? | Ejemplo de API-Usage v5.0+ |
---|---|---|---|
Imagen, Ancho, Alto | Sí, sí, sí | Sí, sí, sí | response.mainImage; response.mainImageSize; response.mainImageURL; |
Icono+Ancho+Alto | Sí, No, No | Sí, sí, sí | response.iconImage; response.iconImageURL; response.iconImageSize; |
Título | Sí | Sí | response.title; |
Patrocinado por | Sí | Sí | response.sponsoredBy; |
Texto de cuerpo | Sí | Sí | response.body; |
Desc2 | Sí | Sí | response.additionalDescription; |
Llamada a la acción | Sí | Sí | response.callToAction; |
Clasificación, escala | Sí, sí | Sí, no | response.rating; |
Me gusta | No | Sí (solo json) | NSDictionary *customElements = response.customElements[@"ELEMENT"]; if(customElements){ NSString *likes = customElements[@"likes"] NSString *downloads = customElements[@"downloads"] NSString *price = customElements[@"price"] NSString *saleprice = customElements[@"saleprice"] NSString *phone = customElements[@"phone"] NSString *address = customElements[@"address"]; NSString *displayurl = customElements[@"displayurl"]; // To Get clickUrl NSString *clickUrl = customElements[@"link"][@"url"]; //To Get clickFallbackUrl NSString *clickFallbackUrl = customElements[@"link"][@"fallback_url"] } |
Descargas | No | Sí (solo json) | NSDictionary *customElements = response.customElements[@"ELEMENT"]; if(customElements){ NSString *likes = customElements[@"likes"] NSString *downloads = customElements[@"downloads"] NSString *price = customElements[@"price"] NSString *saleprice = customElements[@"saleprice"] NSString *phone = customElements[@"phone"] NSString *address = customElements[@"address"]; NSString *displayurl = customElements[@"displayurl"]; // To Get clickUrl NSString *clickUrl = customElements[@"link"][@"url"]; //To Get clickFallbackUrl NSString *clickFallbackUrl = customElements[@"link"][@"fallback_url"] } |
Precio | No | Sí (solo json) | NSDictionary *customElements = response.customElements[@"ELEMENT"]; if(customElements){ NSString *likes = customElements[@"likes"] NSString *downloads = customElements[@"downloads"] NSString *price = customElements[@"price"] NSString *saleprice = customElements[@"saleprice"] NSString *phone = customElements[@"phone"] NSString *address = customElements[@"address"]; NSString *displayurl = customElements[@"displayurl"]; // To Get clickUrl NSString *clickUrl = customElements[@"link"][@"url"]; //To Get clickFallbackUrl NSString *clickFallbackUrl = customElements[@"link"][@"fallback_url"] } |
Precio de venta | No | Sí (solo json) | NSDictionary *customElements = response.customElements[@"ELEMENT"]; if(customElements){ NSString *likes = customElements[@"likes"] NSString *downloads = customElements[@"downloads"] NSString *price = customElements[@"price"] NSString *saleprice = customElements[@"saleprice"] NSString *phone = customElements[@"phone"] NSString *address = customElements[@"address"]; NSString *displayurl = customElements[@"displayurl"]; // To Get clickUrl NSString *clickUrl = customElements[@"link"][@"url"]; //To Get clickFallbackUrl NSString *clickFallbackUrl = customElements[@"link"][@"fallback_url"] } |
Phone | No | Sí (solo json) | NSDictionary *customElements = response.customElements[@"ELEMENT"]; if(customElements){ NSString *likes = customElements[@"likes"] NSString *downloads = customElements[@"downloads"] NSString *price = customElements[@"price"] NSString *saleprice = customElements[@"saleprice"] NSString *phone = customElements[@"phone"] NSString *address = customElements[@"address"]; NSString *displayurl = customElements[@"displayurl"]; // To Get clickUrl NSString *clickUrl = customElements[@"link"][@"url"]; //To Get clickFallbackUrl NSString *clickFallbackUrl = customElements[@"link"][@"fallback_url"] } |
Dirección | No | Sí (solo json) | NSDictionary *customElements = response.customElements[@"ELEMENT"]; if(customElements){ NSString *likes = customElements[@"likes"] NSString *downloads = customElements[@"downloads"] NSString *price = customElements[@"price"] NSString *saleprice = customElements[@"saleprice"] NSString *phone = customElements[@"phone"] NSString *address = customElements[@"address"]; NSString *displayurl = customElements[@"displayurl"]; // To Get clickUrl NSString *clickUrl = customElements[@"link"][@"url"]; //To Get clickFallbackUrl NSString *clickFallbackUrl = customElements[@"link"][@"fallback_url"] } |
Dirección URL de presentación | No | Sí (solo json) | NSDictionary *customElements = response.customElements[@"ELEMENT"]; if(customElements){ NSString *likes = customElements[@"likes"] NSString *downloads = customElements[@"downloads"] NSString *price = customElements[@"price"] NSString *saleprice = customElements[@"saleprice"] NSString *phone = customElements[@"phone"] NSString *address = customElements[@"address"]; NSString *displayurl = customElements[@"displayurl"]; // To Get clickUrl NSString *clickUrl = customElements[@"link"][@"url"]; //To Get clickFallbackUrl NSString *clickFallbackUrl = customElements[@"link"][@"fallback_url"] } |
Haga clic en URL | No | Sí (solo json) | NSDictionary *customElements = response.customElements[@"ELEMENT"]; if(customElements){ NSString *likes = customElements[@"likes"] NSString *downloads = customElements[@"downloads"] NSString *price = customElements[@"price"] NSString *saleprice = customElements[@"saleprice"] NSString *phone = customElements[@"phone"] NSString *address = customElements[@"address"]; NSString *displayurl = customElements[@"displayurl"]; // To Get clickUrl NSString *clickUrl = customElements[@"link"][@"url"]; //To Get clickFallbackUrl NSString *clickFallbackUrl = customElements[@"link"][@"fallback_url"] } |
Haga clic en Dirección URL de reserva | No | Sí (solo json) | NSDictionary *customElements = response.customElements[@"ELEMENT"]; if(customElements){ NSString *likes = customElements[@"likes"] NSString *downloads = customElements[@"downloads"] NSString *price = customElements[@"price"] NSString *saleprice = customElements[@"saleprice"] NSString *phone = customElements[@"phone"] NSString *address = customElements[@"address"]; NSString *displayurl = customElements[@"displayurl"]; // To Get clickUrl NSString *clickUrl = customElements[@"link"][@"url"]; //To Get clickFallbackUrl NSString *clickFallbackUrl = customElements[@"link"][@"fallback_url"] } |
URL de privacidad | No | Sí | response.privacyLink; |
Vídeo | No | Sí | response.vastXML; |
Personalizado | Sí | No | |
Contexto | Sí | No | |
Texto completo | Yes | No |