Annonces natives

Les annonces natives sont des éléments d'annonce qui sont présentés aux utilisateurs via des composants d'interface utilisateur qui sont natifs sur la plate-forme. Elles s'affichent avec les mêmes types de vues que que vous créez déjà vos mises en page. Vous pouvez les mettre en forme pour s'adapter la conception visuelle de l'application.

Lors du chargement d'une annonce native, votre application reçoit un objet d'annonce contenant ses éléments, et l'application, au lieu du SDK Google Mobile Ads, chargée de les afficher.

De manière générale, la mise en œuvre d'annonces natives s'effectue en deux étapes: Chargement d'une annonce à l'aide du SDK, puis affichage du contenu de l'annonce dans votre application.

Cette page explique comment utiliser le SDK pour charger annonces natives. Conseil: Pour en savoir plus sur les annonces natives, consultez notre page Annonces natives Playbook.

Vous pouvez également consulter des témoignages de clients: étude de cas 1, étude de cas 2.

Prérequis

Toujours tester avec des annonces tests

Lorsque vous créez et testez vos applications, veillez à utiliser des annonces tests plutôt que des annonces de production.

Le moyen le plus simple de charger des annonces tests consiste à utiliser notre ID de bloc d'annonces test dédié. Pour les annonces natives sur Android:

ca-app-pub-3940256099942544/2247696110

Il a été spécialement configuré pour afficher des annonces tests pour chaque demande. et l'utiliser dans vos propres applications lors du codage, des tests et du débogage. Assurez-vous simplement que remplacez-le par votre propre ID de bloc d'annonces avant de publier votre application.

Pour en savoir plus sur le fonctionnement des annonces tests du SDK Google Mobile Ads, consultez Tester les annonces

Charger les annonces

Les annonces natives sont chargées la classe AdLoader, qui possède sa propre Builder pour le personnaliser lors de la création. En ajoutant des écouteurs à AdLoader lors de sa création, l'application spécifie les types d'annonces natives qu'elle est prête à diffuser recevoir. Le AdLoader ne demande alors que ces types.

Créer un adLoader

Le code suivant montre comment créer un AdLoader capable de charger des éléments natifs annonces:

Java

AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(new NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build();

Kotlin

val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110}")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // Handle the failure.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

La forNativeAd() est chargée de préparer AdLoader pour le format NativeAd. Lorsqu'une annonce a bien été chargée, l'objet onNativeAdLoaded() de l'objet écouteur est appelée.

Configurer un objet AdListener avec AdLoader (facultatif)

Lors de la création de l'AdLoader, la withAdListener définit une AdListener pour Loader. La méthode utilise un AdListener comme paramètre unique, qui reçoit rappels à partir de AdLoader lorsque des événements de cycle de vie d'annonce ont lieu:

Java

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

Demander des annonces

Une fois que vous avez terminé de créer une AdLoader, vous pouvez l'utiliser pour demander des annonces. Deux méthodes sont disponibles pour cela: loadAd() et loadAds().

loadAd()

Cette méthode envoie une demande pour une seule annonce.

Java

adLoader.loadAd(new AdRequest.Builder().build());

Kotlin

adLoader.loadAd(AdRequest.Builder().build())

loadAds()

Cette méthode envoie une demande pour plusieurs annonces (jusqu'à cinq):

Java

adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

adLoader.loadAds(AdRequest.Builder().build(), 3)

Les deux méthodes prennent une AdRequest comme premier paramètre. C'est la même chose AdRequest utilisée par les bannières et les interstitiels, Vous pouvez aussi utiliser les méthodes de la classe AdRequest pour ajoutez des informations de ciblage, tout comme que pour d'autres formats d'annonces.

Charger plusieurs annonces (facultatif)

La méthode loadAds() utilise un paramètre supplémentaire: le nombre d'annonces que le SDK doit tenter de charger la requête. Ce nombre est plafonné à cinq et il est il n'est pas garanti que le SDK affichera le nombre exact d'annonces demandées.

Les annonces Google renvoyées seront toutes différentes les unes des autres, bien que les annonces provenant de un inventaire réservé ou des acheteurs tiers ne sont pas forcément uniques.

N'utilisez pas la méthode loadAds() si vous avez recours à la médiation, car les demandes de plusieurs annonces natives ne fonctionnent pas pour les ID de bloc d'annonces configuré pour la médiation.

Rappels

Après un appel à loadAd(), un seul rappel est effectué au niveau précédemment défini. méthodes d'écouteur pour diffuser l'objet d'annonce native ou signaler une erreur.

Après un appel à loadAds(), plusieurs rappels de ce type sont effectués (au moins un, et dans la limite du nombre d'annonces demandées). Applications demandant plusieurs annonces doit appeler AdLoader.isLoading() dans ses implémentations de rappel pour pour déterminer si le processus de chargement est terminé.

Voici un exemple montrant comment vérifier isLoading() dans Rappel onNativeAdLoaded():

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading()) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }
}).build();
adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }.build()
adLoader.loadAds(AdRequest.Builder().build(), 3)

Libérer les ressources

Veillez à utiliser la méthode destroy() sur les annonces natives chargées. Cette date de sortie utilise des ressources et empêche les fuites de mémoire.

Assurez-vous que toutes les références NativeAd sont détruites dans le onDestroy().

Dans votre rappel onNativeAdLoaded, veillez à détruire tous les éléments existants des annonces natives qui seront déréférencées.

Une autre vérification de clé consiste à vérifier si l'activité est détruite et, le cas échéant, à appeler destroy() sur l'annonce renvoyée et affiche immédiatement le résultat suivant:

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed()` is a method on Activity.
        if (isDestroyed()) {
            nativeAd.destroy();
            return;
        }
        ...
    }
}).build();

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd { nativeAd ->
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed` is a method on Activity.
        if (isDestroyed) {
            nativeAd.destroy()
            return@forNativeAd
        }
        ...
    }.build()

Bonnes pratiques

Suivez ces règles lors du chargement des annonces.

  • Les applications qui utilisent des annonces natives dans une liste doivent effectuer une mise en cache préalable de la liste d'annonces.

  • Lorsque vous mettez en cache des annonces, effacez votre cache et actualisez la page au bout d'une heure.

  • N'appelez pas loadAd() ni loadAds() sur un AdLoader jusqu'au premier le chargement de la requête est terminé.

Accélération matérielle pour les annonces vidéo

Pour que vos annonces vidéo s'affichent correctement dans les visionnages d'annonces natives, matérielle accélération doit être activée.

L'accélération matérielle est activée par défaut, mais certaines applications peuvent choisir de le désactiver. Si votre application est concernée, nous vous recommandons d'activer le matériel l'accélération pour les classes d'activité qui utilisent des annonces.

Activer l'accélération matérielle

Si votre application ne se comporte pas correctement avec l'accélération matérielle activée de façon globale, mais vous pouvez aussi le contrôler pour des activités spécifiques. Pour activer ou désactiver l'accélération matérielle, utiliser l'attribut android:hardwareAccelerated pour le <application> et <activity> dans votre AndroidManifest.xml. L'exemple suivant active le matériel pour l'ensemble de l'application, mais la désactive pour une activité:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

Reportez-vous à la métrique Accélération matérielle guide des en savoir plus sur les options de contrôle de l'accélération matérielle. Remarque que les visionnages d'annonces individuels ne peuvent pas être activés pour l'accélération matérielle si L'activité est désactivée. L'activité elle-même doit donc disposer de l'accélération matérielle. est activé.

Afficher votre annonce

Une fois l'annonce chargée, il ne vous reste plus qu'à la présenter à vos utilisateurs. Accédez à notre atelier natif avancé guide pour savoir comment procéder.