Ir al contenido

Nativo

Los anuncios nativos son un tipo de anuncio que puede ser mostrado con el mismo estilo visual del resto de la app, lo que permite una integración natural y no-intrusiva con la interfaz de usuario.

A diferencia del resto de formatos, la vista del anuncio se define de forma nativa en cada plataforma y el SDK la rellena con los recursos del anuncio, sea cual sea la fuente de demanda que lo haya servido. React Native muestra después esa vista a través del componente WortiseNativeAdView.

Cada vista de anuncio la proporciona una factoría que se registra de forma nativa con un identificador, que después se utiliza desde JavaScript para mostrar los anuncios.

En primer lugar, crea un fichero de layout (por ejemplo native_ad.xml) donde cada vista que mostrará un recurso del anuncio tenga un identificador, e implementa después la interfaz WortiseNativeAdViewFactory:

package com.example.app
import android.content.Context
import com.wortise.ads.natives.NativeAdView
import com.wortise.ads.natives.NativeAdViewBinder
import com.wortise.ads.react.WortiseNativeAdViewFactory
class MyNativeAdViewFactory(private val context: Context) : WortiseNativeAdViewFactory {
private val binder = NativeAdViewBinder.Builder(R.layout.native_ad)
.setAdvertiserTextViewId(R.id.ad_advertiser)
.setBodyTextViewId(R.id.ad_body)
.setCallToActionButtonId(R.id.ad_call_to_action)
.setHeadlineTextViewId(R.id.ad_headline)
.setIconImageViewId(R.id.ad_app_icon)
.setMediaContentViewId(R.id.ad_media)
.setPriceTextViewId(R.id.ad_price)
.setRatingContentViewId(R.id.ad_rating)
.setStoreTextViewId(R.id.ad_store)
.build()
override fun createNativeAdView() = NativeAdView(context, binder)
}

A continuación, registra la factoría en la clase MainApplication:

import com.wortise.ads.react.WortiseNativeAds
class MainApplication : Application(), ReactApplication {
override fun onCreate() {
super.onCreate()
...
WortiseNativeAds.registerFactory("my-factory", MyNativeAdViewFactory(this))
}
}

Crea la vista como una subclase de WANativeAdView, por código o con un fichero XIB, conectando los outlets de los recursos que muestre el diseño. Después, implementa la factoría:

import WortiseSDK
import RNWortiseSdk
class MyNativeAdViewFactory: WortiseNativeAdViewFactory {
func createNativeAdView() -> WANativeAdView {
return NativeAdView(frame: .zero)
}
}

A continuación, registra la factoría en la clase AppDelegate:

func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
WortiseNativeAds.registerFactory("my-factory", factory: MyNativeAdViewFactory())
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}

Una vez registradas las factorías, los anuncios se solicitan con la clase WortiseNativeAd y se muestran con el componente WortiseNativeAdView:

import { WortiseNativeAd, WortiseNativeAdView } from '@wortise/react-native-sdk';
/* ... */
const [nativeAd, setNativeAd] = useState(null);
const loadNative = () => {
if (nativeAd) {
nativeAd.destroy();
setNativeAd(null);
}
WortiseNativeAd.createForAdRequest('Ad Unit ID de Wortise')
.then((ad) => {
ad.addEventListener('onNativeClicked', () => {
// Invocado cuando el anuncio ha sido clicado
});
ad.addEventListener('onNativeImpression', () => {
// Invocado cuando el anuncio ha generado una impresión
});
ad.addEventListener('onNativeRevenuePaid', (data) => {
// Invocado cuando el anuncio ha generado ingresos
});
setNativeAd(ad);
})
.catch((error) => {
// Invocado cuando el anuncio no ha podido cargarse
// (por un error o por falta de inventario)
});
};
return (
<View style={styles.container}>
<Button onPress={loadNative} title="Load Native" />
{nativeAd && (
<WortiseNativeAdView
factoryId="my-factory"
nativeAd={nativeAd}
style={{ height: 300, width: '100%' }}
/>
)}
</View>
);

La instancia de WortiseNativeAd expone los recursos del anuncio, que se pueden utilizar para mostrarlos con tus propios componentes:

PropiedadTipoDescripción
advertiserstring?Nombre del anunciante
bodystring?Descripción del anuncio
callToActionstring?Texto de la llamada a la acción
headlinestring?Titular del anuncio
iconWortiseNativeAdImage?Icono del anuncio
imagesWortiseNativeAdImage[]?Imágenes del anuncio
mediaContentWortiseNativeMediaContent?Contenido multimedia del anuncio
pricestring?Precio del producto promocionado
ratingnumber?Valoración del producto promocionado
storestring?Tienda del producto promocionado

El método createForAdRequest también acepta los parámetros de la petición, igual que el resto de formatos:

WortiseNativeAd.createForAdRequest('Ad Unit ID de Wortise', { agent: 'your agent' });