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
: aMediatedBannerAdViewController
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 elMediatedBannerAdView
objeto que inició esta llamada. -
height
: alto del anuncio en píxeles tal como se define en elMediatedBannerAdView
objeto que inició esta llamada. -
targetingParameters
ObjetoTargetingParameters
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
: aMediatedInterstitialAdViewController
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
: objetoTargetingParameters
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 aInterstitialAdView.isReady
. -
show
: nuestro SDK llama a este método para mostrar la vista intersticial cuando el usuario ha llamado aInterstitialAdView.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.