Partager via


Adaptateurs personnalisés Android

Les adaptateurs personnalisés permettent à notre SDK d’appeler un autre SDK installé sur le même appareil, généralement à des fins de médiation. Ce document décrit le code que vous devez écrire pour créer vos propres adaptateurs personnalisés.

Remarque

Les interfaces décrites ici sont exactement celles que nous avons utilisées pour implémenter nos propres adaptateurs de médiation.

Bannières

Pour afficher des bannières publicitaires médiatées, vous devez implémenter l’interface MediatedBannerAdView , qui se compose de deux méthodes : requestAd et destroy.

Vous êtes également responsable de l’implémentation des rappels qui traduisent les événements du KIT de développement logiciel (SDK) médiatté en événements compris par notre KIT de développement logiciel (SDK) mobile. Pour plus d’informations, consultez l’exemple d’implémentation ci-dessous :

 /**
 * 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();
    }
}

Le Kit de développement logiciel (SDK) mobile de Xandr appelle la requestAd méthode lorsque le SDK tiers doit commencer à demander une publicité. requestAd retourne une vue qui contient la publicité à partir du KIT de développement logiciel (SDK) tiers ; il prend les paramètres suivants :

  • mBC MediatedBannerAdViewController: par le biais duquel l’adaptateur doit envoyer des événements à notre SDK.
  • activity: Activity contexte par lequel l’adaptateur peut instancier son objet de vue.
  • parameter: chaîne opaque facultative transmise à partir du serveur, qui peut être utilisée pour définir des paramètres spécifiques au SDK, tels que des informations de ciblage supplémentaires. L’encodage du contenu de cette chaîne est entièrement à la charge de l’implémentation de l’adaptateur sdk tiers.
  • uid: ID réseau de cet appel publicitaire. Cet ID est opaque pour notre KIT de développement logiciel (SDK) mobile ; le contenu de l’ID et son encodage sont à la charge de l’implémentation du KIT de développement logiciel (SDK) tiers. En d’autres termes, vous devez le remplir avec une valeur comprise par le serveur publicitaire du SDK tiers.
  • width: largeur de la publication en pixels telle que définie dans l’objet MediatedBannerAdView qui a lancé cet appel.
  • height: hauteur de la publication en pixels, telle que définie dans l’objet MediatedBannerAdView qui a lancé cet appel.
  • targetingParameters Objet TargetingParameters contenant des informations de ciblage qui ont été transmises à notre KIT de développement logiciel (SDK) mobile, telles que l’âge, le sexe et l’emplacement.

Interludes

Les interstitiels doivent être prérécupérés par le KIT de développement logiciel (SDK) médiatisé avant d’être affichés à l’utilisateur. Comme avec les bannières, vous devez implémenter requestAd. Vous devez également implémenter isReady pour indiquer à l’utilisateur si une annonce est disponible, et show, qui affiche une annonce.

Vous êtes responsable de l’implémentation des rappels qui traduisent les événements du KIT de développement logiciel (SDK) en événements compris par notre SDK. Pour plus d’informations, consultez l’exemple d’implémentation ci-dessous :

/**
 * 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();
    }
}

L’adaptateur doit appeler requestAd lorsque le KIT de développement logiciel (SDK) tiers doit commencer à demander une publicité. Il accepte les arguments suivants :

  • mIC MediatedInterstitialAdViewController: par le biais duquel l’adaptateur doit envoyer des événements à notre SDK.
  • activity: Activity contexte par lequel l’adaptateur peut instancier son objet de vue.
  • parameter: chaîne opaque facultative transmise à partir du serveur, qui peut être utilisée pour définir des paramètres spécifiques au SDK, tels que des informations de ciblage supplémentaires. L’encodage du contenu de cette chaîne est entièrement à la charge de l’implémentation de l’adaptateur sdk tiers.
  • uid: ID réseau de cet appel publicitaire. Cet ID est opaque pour notre KIT de développement logiciel (SDK) ; le contenu de l’ID et son encodage sont à la charge de l’implémentation du KIT de développement logiciel (SDK) tiers. En d’autres termes, le paramètre doit être rempli avec des valeurs comprises par le serveur publicitaire du SDK tiers.
  • targetingParameters TargetingParameters: objet contenant des informations de ciblage qui ont été passées à notre SDK mobile, telles que l’âge, le sexe et l’emplacement.

En plus de requestAd, l’interface MediatedInterstitialAdView vous oblige à implémenter les méthodes suivantes :

  • isReady: notre SDK appelle cette méthode pour case activée si la vue d’interstitiel est prête lorsque l’utilisateur appelle InterstitialAdView.isReady.
  • show: notre Kit de développement logiciel (SDK) appelle cette méthode pour afficher la vue interstitielle lorsque l’utilisateur a appelé InterstitialAdView.show.

Rappels requis

Les rappels répertoriés ci-dessous doivent être implémentés par votre adaptateur personnalisé. Notez que ces rappels sont obligatoires, que l’annonce en question soit une bannière ou une bannière. Vous pouvez voir des exemples d’utilisation dans les exemples de code ci-dessus.

  • onAdLoaded: appelé pour indiquer que la demande du KIT de développement logiciel (SDK) médiattée s’est terminée et a retourné une bannière avec succès.
  • onAdFailed: appelé pour indiquer que la demande du KIT de développement logiciel (SDK) n’a pas pu retourner une publicité valide.

Rappels facultatifs

Les rappels répertoriés ci-dessous doivent être implémentés dans des adaptateurs personnalisés pour les bannières et les interstitiels.

  • onAdClicked: l’utilisateur a cliqué sur l’annonce.
  • onAdExpanded: l’annonce présente une vue modale.
  • onAdCollapsed: l’annonce ignore la vue modale.