Annonces natives

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Les annonces natives sont des éléments d'annonce présentés aux utilisateurs via des composants d'interface utilisateur natifs sur la plate-forme. Elles s'affichent avec les mêmes types de vues que celles que vous utilisez déjà pour la mise en page. Vous pouvez les adapter à l'apparence de votre site. En termes de codage, cela signifie que, lorsqu'une annonce native se charge, votre application reçoit un objet NativeAd contenant ses éléments. Elle est ensuite chargée de l'affichage (et non du SDK Google Mobile Ads).

Pour faire simple, vous devez configurer les annonces natives en deux temps : Charger une annonce à l'aide du SDK, puis afficher le contenu de l'annonce dans votre application.

Cette page concerne l'utilisation du SDK pour charger les annonces natives.

Conditions préalables

Intégration

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

Créer un chargeur d'annonce

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

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 by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

Préparer le format NativeAd

La première méthode ci-dessus est responsable de la préparation de AdLoader pour le format NativeAd:

forNativeAd()
En appelant cette méthode, vous configurez AdLoader pour demander des annonces natives. Lorsqu'une annonce se charge correctement, la méthode onNativeAdLoaded() de l'objet de l'écouteur est appelée.

Lorsque AdLoader envoie une demande d'annonce, Google sélectionne et renvoie l'annonce qui maximise le rendement de l'éditeur.

Configurer un AdListener avec l'AdCharger (facultatif)

Lors de la création de AdLoader ci-dessus, la fonction withAdListener définit un AdListener. La méthode utilise un AdListener comme paramètre unique, qui reçoit des rappels de AdLoader lorsque des événements de cycle de vie des annonces se produisent:

Java

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

Kotlin

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

Charger les annonces

Une fois que vous avez créé un AdLoader, vous pouvez l'utiliser pour charger des annonces. Deux méthodes sont disponibles : 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)

Ces deux méthodes utilisent un objet AdRequest comme premier paramètre. Il s'agit de la même classe AdRequest que celle utilisée par les bannières et les interstitiels. Vous pouvez utiliser des méthodes de la classe AdRequest pour ajouter des informations de ciblage, comme vous le feriez avec d'autres formats d'annonces.

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

Les annonces Google renvoyées seront toutes différentes. Il n'est pas garanti que les annonces de l'inventaire réservé ou d'acheteurs tiers, y compris les acheteurs configurés pour la médiation en cascade ou les enchères, soient uniques.

Rappels

Après un appel à loadAd(), un seul rappel est effectué vers les méthodes d'écoute définies précédemment afin de diffuser l'objet de l'annonce native ou de signaler une erreur.

Après un appel à loadAds(), plusieurs de ces rappels sont effectués (entre 1 et 3). Les applications demandant plusieurs annonces doivent appeler AdLoader.isLoading() dans leurs implémentations de rappel pour déterminer si le processus de chargement est terminé.

Voici un exemple montrant comment vérifier isLoading() dans le 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() pour les annonces natives chargées. Cela libère des ressources utilisées et évite les fuites de mémoire.

Assurez-vous que toutes les références NativeAd sont détruites dans la méthode onDestroy() de votre activité.

Dans votre rappel onNativeAdLoaded, veillez à détruire les annonces natives existantes qui seront déréférencées.

Vous pouvez également vérifier si l'activité est détruite. Dans ce cas, appelez destroy() sur l'annonce renvoyée, puis renvoyez-la immédiatement:

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()

Toujours tester avec les annonces tests

Lorsque vous créez et testez vos applications, veillez à utiliser des annonces de test plutôt que des annonces de production. À défaut, votre compte risque d'être suspendu.

Pour charger les annonces tests, le plus simple est d'utiliser notre ID de bloc d'annonces test dédié pour le format natif avancé sur Android:

ca-app-pub-3940256099942544/2247696110

Elle a été spécialement configurée pour renvoyer des annonces tests à chaque requête. Vous pouvez l'utiliser dans vos propres applications pour coder, tester et déboguer. Veillez simplement à le remplacer 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 Mobile Ads, consultez la page Annonces tests.

Quand demander des annonces ?

Les applications qui diffusent des annonces natives sont libres de demander à l'avance leur date d'affichage effective. Cette pratique est souvent recommandée. Par exemple, une application affichant une liste d'éléments contenant des annonces natives peut charger des annonces natives pour toute la liste, sachant que certaines ne seront affichées qu'une fois que l'utilisateur a fait défiler la vue et que d'autres peuvent ne pas s'afficher du tout.

Accélération matérielle des annonces vidéo

Pour que les annonces vidéo s'affichent correctement dans les vues de votre annonce native, vous devez activer l'accélération matérielle.

L'accélération matérielle est activée par défaut, mais certaines applications peuvent choisir de la désactiver. Si cela s'applique à votre application, nous vous recommandons d'activer l'accélération matérielle 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 à l'échelle mondiale, vous pouvez également la contrôler pour des activités individuelles. Pour activer ou désactiver l'accélération matérielle, vous pouvez utiliser l'attribut android:hardwareAccelerated pour les éléments <application> et <activity> de votre AndroidManifest.xml. L'exemple suivant active l'accélération matérielle 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>

Consultez le guide d'accélération matérielle pour en savoir plus sur les options de contrôle de l'accélération matérielle. Notez que l'accélération matérielle ne peut pas être activée pour les vues d'annonces individuelles si l'activité est désactivée. L'activité elle-même doit donc être activée pour l'activité matérielle.

Afficher une annonce native

Une fois que vous avez chargé une annonce, il vous suffit de la présenter à vos utilisateurs. Pour en savoir plus, consultez notre guide sur les annonces natives (mode avancé).

,

Les annonces natives sont des éléments d'annonce présentés aux utilisateurs via des composants d'interface utilisateur natifs sur la plate-forme. Elles s'affichent avec les mêmes types de vues que celles que vous utilisez déjà pour la mise en page. Vous pouvez les adapter à l'apparence de votre site. En termes de codage, cela signifie que, lorsqu'une annonce native se charge, votre application reçoit un objet NativeAd contenant ses éléments. Elle est ensuite chargée de l'affichage (et non du SDK Google Mobile Ads).

Pour faire simple, vous devez configurer les annonces natives en deux temps : Charger une annonce à l'aide du SDK, puis afficher le contenu de l'annonce dans votre application.

Cette page concerne l'utilisation du SDK pour charger les annonces natives.

Conditions préalables

Intégration

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

Créer un chargeur d'annonce

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

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 by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

Préparer le format NativeAd

La première méthode ci-dessus est responsable de la préparation de AdLoader pour le format NativeAd:

forNativeAd()
En appelant cette méthode, vous configurez AdLoader pour demander des annonces natives. Lorsqu'une annonce se charge correctement, la méthode onNativeAdLoaded() de l'objet de l'écouteur est appelée.

Lorsque AdLoader envoie une demande d'annonce, Google sélectionne et renvoie l'annonce qui maximise le rendement de l'éditeur.

Configurer un AdListener avec l'AdCharger (facultatif)

Lors de la création de AdLoader ci-dessus, la fonction withAdListener définit un AdListener. La méthode utilise un AdListener comme paramètre unique, qui reçoit des rappels de AdLoader lorsque des événements de cycle de vie des annonces se produisent:

Java

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

Kotlin

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

Charger les annonces

Une fois que vous avez créé un AdLoader, vous pouvez l'utiliser pour charger des annonces. Deux méthodes sont disponibles : 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)

Ces deux méthodes utilisent un objet AdRequest comme premier paramètre. Il s'agit de la même classe AdRequest que celle utilisée par les bannières et les interstitiels. Vous pouvez utiliser des méthodes de la classe AdRequest pour ajouter des informations de ciblage, comme vous le feriez avec d'autres formats d'annonces.

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

Les annonces Google renvoyées seront toutes différentes. Il n'est pas garanti que les annonces de l'inventaire réservé ou d'acheteurs tiers, y compris les acheteurs configurés pour la médiation en cascade ou les enchères, soient uniques.

Rappels

Après un appel à loadAd(), un seul rappel est effectué vers les méthodes d'écoute définies précédemment afin de diffuser l'objet de l'annonce native ou de signaler une erreur.

Après un appel à loadAds(), plusieurs de ces rappels sont effectués (entre 1 et 3). Les applications demandant plusieurs annonces doivent appeler AdLoader.isLoading() dans leurs implémentations de rappel pour déterminer si le processus de chargement est terminé.

Voici un exemple montrant comment vérifier isLoading() dans le 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() pour les annonces natives chargées. Cela libère des ressources utilisées et évite les fuites de mémoire.

Assurez-vous que toutes les références NativeAd sont détruites dans la méthode onDestroy() de votre activité.

Dans votre rappel onNativeAdLoaded, veillez à détruire les annonces natives existantes qui seront déréférencées.

Vous pouvez également vérifier si l'activité est détruite. Dans ce cas, appelez destroy() sur l'annonce renvoyée, puis renvoyez-la immédiatement:

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()

Toujours tester avec les annonces tests

Lorsque vous créez et testez vos applications, veillez à utiliser des annonces de test plutôt que des annonces de production. À défaut, votre compte risque d'être suspendu.

Pour charger les annonces tests, le plus simple est d'utiliser notre ID de bloc d'annonces test dédié pour le format natif avancé sur Android:

ca-app-pub-3940256099942544/2247696110

Elle a été spécialement configurée pour renvoyer des annonces tests à chaque requête. Vous pouvez l'utiliser dans vos propres applications pour coder, tester et déboguer. Veillez simplement à le remplacer 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 Mobile Ads, consultez la page Annonces tests.

Quand demander des annonces ?

Les applications qui diffusent des annonces natives sont libres de demander à l'avance leur date d'affichage effective. Cette pratique est souvent recommandée. Par exemple, une application affichant une liste d'éléments contenant des annonces natives peut charger des annonces natives pour toute la liste, sachant que certaines ne seront affichées qu'une fois que l'utilisateur a fait défiler la vue et que d'autres peuvent ne pas s'afficher du tout.

Accélération matérielle des annonces vidéo

Pour que les annonces vidéo s'affichent correctement dans les vues de votre annonce native, vous devez activer l'accélération matérielle.

L'accélération matérielle est activée par défaut, mais certaines applications peuvent choisir de la désactiver. Si cela s'applique à votre application, nous vous recommandons d'activer l'accélération matérielle 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 à l'échelle mondiale, vous pouvez également la contrôler pour des activités individuelles. Pour activer ou désactiver l'accélération matérielle, vous pouvez utiliser l'attribut android:hardwareAccelerated pour les éléments <application> et <activity> de votre AndroidManifest.xml. L'exemple suivant active l'accélération matérielle 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>

Consultez le guide d'accélération matérielle pour en savoir plus sur les options de contrôle de l'accélération matérielle. Notez que l'accélération matérielle ne peut pas être activée pour les vues d'annonces individuelles si l'activité est désactivée. L'activité elle-même doit donc être activée pour l'activité matérielle.

Afficher une annonce native

Une fois que vous avez chargé une annonce, il vous suffit de la présenter à vos utilisateurs. Pour en savoir plus, consultez notre guide sur les annonces natives (mode avancé).