Compartir a través de


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.