Obtener Facebook demanda de nativo en Android
En este artículo se describe el proceso para recuperar recursos de anuncios nativos que se mostrarán en el SDK de Audience Network de Facebook en los pasos siguientes:
Asegúrese de instalar los SDK adecuados
Deberá instalar el SDK móvil y el paquete Xandr-FAN-Demand. Para más información sobre los detalles de las versiones, consulte nuestra página de versiones. En la sección dependencias del build.gradle
proyecto, agregue estas dos líneas:
dependencies {
implementation 'com.appnexus.opensdk:appnexus-sdk:[8,9)'
implementation 'com.appnexus.opensdk.csr:appnexus-facebook-csr:[8,9)'
}
Inicializar el SDK de Audience Network de Facebook
Al principio del ciclo de vida de la aplicación, inicialícelo Audience Network
así:
AudienceNetworkAds.buildInitSettings(this).withInitListener(new AudienceNetworkAds.InitListener() {
@Override
public void onInitialized(AudienceNetworkAds.InitResult initResult) {
// do something, load ad or else
}
}).initialize();
Nota:
Para garantizar una implementación correcta de un anuncio nativo con Audience Network
la vista nativa personalizada, debe incluir MediaView para el recurso principal.
Create un diseño de anuncio de banner nativo
En el diseño de activity_main.xml
actividad de la aplicación, agrega un contenedor para tu anuncio nativo. Este contenedor debe ser de tipo com.facebook.ads.NativeAdLayout
, que es un contenedor encima de .FrameLayout
Este contenedor proporciona funcionalidad adicional que permite que Mobile SDK represente un elemento nativo Ad Reporting Flow
sobre el anuncio.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
...
<com.facebook.ads.NativeAdLayout
android:id="@+id/native_banner_ad_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" />
...
</RelativeLayout>
Haga clic aquí para ver un código de ejemplo proporcionado por Facebook para configurar diseños personalizados de anuncios de banner nativos.
Create una solicitud de anuncio nativa y cargar el anuncio
Nota:
Mantenga una referencia a la solicitud hasta que reciba una respuesta.
Compruebe el tipo de respuesta devuelta desde NativeAdRequest
. Si el tipo de respuesta es FBNativeBannerAdResponse
, convierta la respuesta inicial en y FBNativeBannerAdResponse
llame al inflateAndRegisterFB
método . Para otros tipos de anuncios nativos, llame a .inflateAndRegisterNonFB
NativeAdRequest request = new NativeAdRequest(MainActivity.this, "17823252");
request.setListener(new NativeAdRequestListener() {
@Override
public void onAdLoaded(NativeAdResponse response) {
Log.d("NativeBanner", "loaded");
MainActivity.this.response = response;
if (response instanceof FBNativeBannerAdResponse) {
FBNativeBannerAdResponse fbResponse = (FBNativeBannerAdResponse) response;
inflateAndRegisterFB(fbResponse);
} else {
inflateAndRegisterNonFB(response);
}
}
@Override
public void onAdFailed(ResultCode errorcode) {
Log.d("NativeBanner", "failed");
}
});
request.loadAd();
Inflar y registrar el anuncio nativo
El proceso para crear NativeAdRequest y cargar el anuncio usa uno de estos métodos, en función del objeto de anuncio nativo devuelto en la respuesta:
inflateAndRegisterFB
inflateAndRegisterNonFB
Estos métodos son idénticos en función, excepto para el proceso de registro. Si el objeto devuelto en la respuesta es una FBNativeBannerAdResponse
respuesta llamaría al registerView
método para registrar el anuncio. Si no fuera un FBNativeBannerAdResponse
objeto, la respuesta llamaría NativeAdSDK.registerTracking
a para registrar el anuncio.
inflateAndRegisterFB
Ejemplo
Recupere y muestre el texto de la llamada a la acción para el botón llamada a la acción:
Button nativeAdCallToAction = adView.findViewById(R.id.native_ad_call_to_action);
nativeAdCallToAction.setText(fbResponse.getCallToAction());
Una vez recuperado el texto del botón, registre el anuncio nativo para que se pueda activar la acción de clic y el seguimiento de impresiones:
fbResponse.registerView(adView, nativeAdIconView, clickableViews, new NativeAdEventListener() {
@Override
public void onAdWasClicked() {
}
@Override
public void onAdWillLeaveApplication() {
}
@Override
public void onAdWasClicked(String clickUrl, String fallbackURL) {
}
});
inflateAndRegisterNonFB
Ejemplo
Recupere el texto de la llamada a la acción que se va a mostrar en el botón llamada a la acción y muestre ese texto:
Button nativeAdCallToAction = adView.findViewById(R.id.native_ad_call_to_action);
nativeAdCallToAction.setText(response.getCallToAction());
Una vez recuperado el texto del botón, registre el anuncio nativo para que se pueda activar la acción de clic y el seguimiento de impresiones:
NativeAdSDK.registerTracking(response, adView, clickableViews, new NativeAdEventListener() {
@Override
public void onAdWasClicked() {
}
@Override
public void onAdWillLeaveApplication() {
}
@Override
public void onAdWasClicked(String clickUrl, String fallbackURL) {
}
});
Acceso al objeto nativo original
Los publicadores pueden acceder al objeto nativo original mediante el getNativeElements
método :
nativeAdCallToAction.setText(fbResponse.getCallToAction());
nativeAdSocialContext.setText(((NativeAdBase)
response.getNativeElements().get(NativeAdResponse.NATIVE_ELEMENT_OBJECT)).getAdSocialContext());
Anular el registro de las vistas
Cuando la aplicación haya terminado de mostrar los anuncios, debe anular el registro de las vistas.
if (this.response != null) {
if (this.response instanceof FBNativeBannerAdResponse) {
FBNativeBannerAdResponse fbresponse = (FBNativeBannerAdResponse) response;
fbresponse.unregisterView();
this.response = null;
} else {
NativeAdSDK.unRegisterTracking(nativeAdView);
}
}
Aplicación de ejemplo
Xandr ha proporcionado una aplicación de ejemplo en nuestro repositorio de Github.