Compartir a través de


Adaptadores personalizados de Android

Los adaptadores personalizados permiten que nuestro SDK llame a otro SDK instalado en el mismo dispositivo, normalmente para la mediación. En este documento se describe el código que debe escribir para crear sus propios adaptadores personalizados.

Nota:

Las interfaces descritas aquí son exactamente las que usamos para implementar nuestros propios adaptadores de mediación.

Banners

Para mostrar anuncios de banner mediados, debe implementar la MediatedBannerAdView interfaz, que consta de dos métodos: requestAd y destroy.

También es responsable de implementar las devoluciones de llamada que convierten los eventos del SDK mediado en eventos que comprende nuestro SDK móvil. Para obtener más información, consulte el ejemplo de implementación siguiente:

 /**
 * The custom adaptor for banners must implement our mobile SDK
 * interface `MediatedBannerAdView`. In this example, the class also
 * implements the `AdListener` interface from the mediated SDK,
 * in order to handle the events from the mediated SDK.
 */
public class TestMediatedBanner implements MediatedBannerAdView {
    MediatedBannerAdViewController controller = null;
    AdView bannerAd;
    
    @Override
    public View requestAd(MediatedBannerAdViewController mediatedBannerAdViewController,
                          Activity activity, String parameter,
                          String adId, int width, int height,
                          TargetingParameters targetingParameters) {

        // Here is where you are responsible for (1) instantiating the mediated SDK,
        // (2) building a request object using the elements of `targetingParameters`.
        // Note that you are responsible for ensuring that the targeting
        // parameters can be understood by the mediated SDK.  We also assume that (3)
        // you create and return a view in the mediated SDK that you can use to make
        // the ad request.

        // Next, we tell the mediated SDK's ad view to request a banner ad from their ad
        // server.  If it works, we call the `onAdLoaded` method on our controller to
        // notify it that we've successfully loaded an ad.

        controller = mediatedBannerAdViewController;

        bannerAd = new AdView(activity, new AdSize(width, height));
        bannerAd.setAdId(adId);

        // You are responsible for creating a mapping between the events
        // emitted by the mediated SDK and those understood by our mobile SDK.
        bannerAd.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded(AdView adView) {
                controller.onAdLoaded();
            }

            @Override
            public void onAdRequestFailed(AdView adView) {
                // If available, map the mediated SDK's failure code
                // to the appropriate Xandr `ResultCode`.  In this example
                // we just pass in ResultCode.UNABLE_TO_FILL.
                controller.onAdFailed(ResultCode.UNABLE_TO_FILL);
            }

            @Override
            public void onAdExpanded(AdView adView) {
                controller.onAdExpanded();
            }

            @Override
            public void onAdCollapsed(AdView adView) {
                controller.onAdCollapsed();
            }

            @Override
            public void onAdClicked(AdView adView) {
                controller.onAdClicked();
            }
        });

        // create a `request` for the mediated SDK from targeting parameters.

        bannerAd.loadAd(request);
        return bannerAd;
    }

    @Override
    public void destroy() {
        // Called when the mediated SDK's view is no longer being shown.
        bannerAd.destroy();
    }
}

El SDK móvil de Xandr llama al requestAd método cuando el SDK de terceros debe empezar a solicitar un anuncio. requestAd devuelve una vista que contiene el anuncio del SDK de terceros; toma los parámetros siguientes:

  • mBC: a MediatedBannerAdViewController través del cual el adaptador debe enviar eventos a nuestro SDK.
  • activity: Activity contexto a través del cual el adaptador puede crear una instancia de su objeto de vista.
  • parameter: cadena opaca opcional que se pasa desde el servidor, que se puede usar para definir parámetros específicos del SDK, como información de destino adicional. La codificación del contenido de esta cadena depende completamente de la implementación del adaptador del SDK de terceros.
  • uid: el identificador de red de esta llamada de anuncio. Este identificador es opaco para nuestro SDK móvil; el contenido del identificador y su codificación están a la altura de la implementación del SDK de terceros. En otras palabras, debe rellenarlo con un valor comprendido por el servidor de anuncios del SDK de terceros.
  • width: ancho del anuncio en píxeles tal como se define en el MediatedBannerAdView objeto que inició esta llamada.
  • height: alto del anuncio en píxeles tal como se define en el MediatedBannerAdView objeto que inició esta llamada.
  • targetingParameters Objeto TargetingParameters que contiene información de destino que se pasó a nuestro SDK móvil, como la edad, el sexo y la ubicación.

Interstitials

Las intersticiales deben ser capturadas previamente por el SDK mediado antes de mostrarlas al usuario. Al igual que con los banners, debe implementar requestAd. También debe implementar isReady para que el usuario sepa si hay un anuncio disponible y show, que muestra un anuncio.

Es responsable de implementar las devoluciones de llamada que convierten los eventos del SDK mediado en eventos que comprende nuestro SDK. Para obtener más información, consulte el ejemplo de implementación siguiente:

/**
 * The custom adaptor for interstitials must implement our mobile SDK
 * interface `MediatedInterstitialAdView`. In this example, the class also
 * implements the `AdListener` interface from the mediated SDK,
 * in order to handle the events from the mediated SDK.
 */
public class TestMediatedInterstitial implements MediatedInterstitialAdView {
    MediatedInterstitialAdViewController controller = null;
    InterstitialAd interstitialAd;
    
    @Override
    public void requestAd(MediatedInterstitialAdViewController     mediatedInterstitialAdViewController,
                          Activity activity, String parameter,
                          String adId, TargetingParameters targetingParameters) {
        // Here is where you would be responsible for (1) instantiating the mediated SDK,
        // (2) building a request object using the elements of `targetingParameters`.
        // Note that you are responsible for ensuring that the targeting
        // parameters can be understood by the mediated SDK.  We also assume that (3)
        // you create and return a view in the mediated SDK that you can use to make
        // the ad request.

        // Next, we tell the mediated SDK's ad view to request an interstitial ad from
        // their ad server.  If it works, we call the `onAdLoaded` method on our
        // controller to notify it that we've successfully loaded an ad.
        
        controller = mediatedInterstitialAdViewController;
       
        interstitialAd = new InterstitialAd(activity);
        interstitialAd.setAdId(adId);

        // You are responsible for creating a mapping between the events
        // emitted by the mediated SDK and those understood by our mobile SDK.
        interstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded(AdView adView) {
                controller.onAdLoaded();
            }

            @Override
            public void onAdRequestFailed(AdView adView) {
                // If available, map the mediated SDK's failure code
                // to ours.  In this example we just pass in
                // ResultCode.UNABLE_TO_FILL.
                controller.onAdFailed(ResultCode.UNABLE_TO_FILL);
            }

            @Override
            public void onAdExpanded(AdView adView) {
                controller.onAdExpanded();
            }

            @Override
            public void onAdCollapsed(AdView adView) {
                controller.onAdCollapsed();
            }

            @Override
            public void onAdClicked(AdView adView) {
                controller.onAdClicked();
            }
        });

        // create a `request` for the mediated SDK from targeting parameters.

        interstitialAd.loadAd(request);
    }
    // Call when the mediated SDK should display the interstitial ad
    @Override
    public void show() {
        interstitialAd.displayAd();
    }

    // Returns whether or not the mediated SDK has an interstitial ad
    // fetched and ready to to be shown.
    @Override
    public boolean isReady() {
        return interstitialAd.isAdReady();
    }

    @Override
    public void destroy() {
        // Called when the mediated SDK's view is no longer being shown.
        interstitialAd.destroy();
    }
}

El adaptador debe llamar cuando requestAd el SDK de terceros debe empezar a solicitar un anuncio. Toma los argumentos siguientes:

  • mIC: a MediatedInterstitialAdViewController través del cual el adaptador debe enviar eventos a nuestro SDK.
  • activity: Activity contexto a través del cual el adaptador puede crear una instancia de su objeto de vista.
  • parameter: cadena opaca opcional que se pasa desde el servidor, que se puede usar para definir parámetros específicos del SDK, como información de destino adicional. La codificación del contenido de esta cadena depende completamente de la implementación del adaptador del SDK de terceros.
  • uid: el identificador de red de esta llamada de anuncio. Este identificador es opaco para nuestro SDK; el contenido del identificador y su codificación están a la altura de la implementación del SDK de terceros. En otras palabras, el parámetro debe rellenarse con valores comprendidos por el servidor de anuncios del SDK de terceros.
  • targetingParameters: objeto TargetingParameters que contiene información de destino que se pasó a nuestro SDK móvil, como la edad, el sexo y la ubicación.

Además de requestAd, la MediatedInterstitialAdView interfaz requiere que implemente estos métodos:

  • isReady: nuestro SDK llama a este método para comprobar si la vista intersticial está lista cuando el usuario llama a InterstitialAdView.isReady.
  • show: nuestro SDK llama a este método para mostrar la vista intersticial cuando el usuario ha llamado a InterstitialAdView.show.

Devoluciones de llamada necesarias

El adaptador personalizado debe implementar las devoluciones de llamada que se enumeran a continuación. Tenga en cuenta que estas devoluciones de llamada son necesarias tanto si el anuncio en cuestión es un banner o intersticial. Puede ver ejemplos de su uso en los ejemplos de código anteriores.

  • onAdLoaded: se llama a para indicar que la solicitud del SDK mediado se completó y devolvió un banner correctamente.
  • onAdFailed: se llama para indicar que la solicitud del SDK mediado no pudo devolver un anuncio válido.

Devoluciones de llamada opcionales

Las devoluciones de llamada que se enumeran a continuación deben implementarse en adaptadores personalizados para banners e intersticiales.

  • onAdClicked: se ha hecho clic en el anuncio.
  • onAdExpanded: el anuncio presenta una vista modal.
  • onAdCollapsed: el anuncio descarta la vista modal.