Annonces natives

Les annonces natives sont des éléments proposés aux utilisateurs via des composants d'interface utilisateur natifs pour la plate-forme. Elles s'affichent à l'aide des mêmes types de vues que celles utilisées pour créer vos mises en page, et elles peuvent être mises en forme pour correspondre à l'aspect visuel de l'expérience utilisateur. En termes de codage, cela signifie que lorsqu'une annonce native se charge, votre application reçoit un objet NativeAd qui contient ses éléments. En effet, l'application (plutôt que le SDK Google Mobile Ads) est alors chargée de les afficher.

De manière générale, la diffusion d'annonces natives s'effectue en deux étapes : le chargement d'une annonce via le SDK et l'affichage du contenu de l'annonce dans votre application. Cette page concerne l'utilisation du SDK pour charger des annonces natives.

Prerequisites

Charger une annonce

Les annonces natives sont chargées via la classe AdLoader, qui dispose de sa propre classe Builder pour la personnaliser lors de la 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'annonces

Le code suivant montre comment créer une AdLoader pouvant 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 consiste à préparer AdLoader pour le format NativeAd:

forNativeAd()
Appeler cette méthode configure le AdLoader pour qu'il demande des annonces natives. Lorsqu'une annonce a bien été chargée, la méthode onNativeAdLoaded() de l'objet d'écoute est appelée.

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

Utiliser AdListener avec un chargeur d'annonce

Lors de la création de AdLoader, la fonction withAdListener définit un AdListener.

Cette étape est facultative. La méthode utilise un AdListener comme paramètre unique, qui reçoit des rappels de la 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.
})

Chargement des annonces...

Une fois que vous avez créé une AdLoader, vous pouvez l'utiliser pour charger des annonces. Deux méthodes sont disponibles pour effectuer cette opération : loadAd() et loadAds().

La méthode loadAd() envoie une demande pour une seule annonce:

loadAd()
Cette méthode envoie une demande pour une seule annonce.

Java

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

Kotlin

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

La méthode loadAds() 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 les 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 essayer de charger pour la requête. Ce nombre est limité à cinq. Il n'est pas garanti que le SDK affiche le nombre exact d'annonces demandées. Si plusieurs annonces sont renvoyées par un appel à loadAds(), elles sont différentes.

Après un appel à loadAd(), un seul rappel est envoyé aux méthodes d'écouteur définies ci-dessus pour diffuser l'objet d'annonce native ou signaler une erreur.

Après un appel à loadAds(), plusieurs rappels de ce type sont effectués (entre un et nombre d'annonces demandées). Les applications qui demandent plusieurs annonces doivent appeler AdLoader.isLoading() dans leurs intégrations de rappel pour déterminer si le processus de chargement est terminé.

Voici un exemple illustrant 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 ad) {
        ...
        // 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)

Nettoyer

Veillez à utiliser la méthode destroy() pour les annonces natives chargées. Cela libère les 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.

Une autre vérification clé consiste à déterminer si l'activité est détruite. Si c'est le cas, appelez destroy() sur l'annonce renvoyée et 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 ad) {
        // 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()) {
            ad.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 des annonces tests

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

Le moyen le plus simple de charger des annonces tests consiste à 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 lors de chaque demande. Vous pouvez l'utiliser dans vos propres applications à des fins de codage, de test et de débogage. Assurez-vous de 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 Tester les annonces.

Quand demander des annonces ?

Les applications qui affichent des annonces natives sont autorisées à les demander avant leur affichage. Souvent, il s'agit de la pratique recommandée. Une application affichant une liste d'éléments avec des annonces natives mélangées, par exemple, peut charger des annonces natives pour l'ensemble de la liste, sachant que certaines ne seront diffusées qu'une fois que l'utilisateur aura fait défiler la vue et que certaines ne seront tout simplement pas affichées.

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é spécifique:

<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 HW pour en savoir plus sur les options de contrôle de l'accélération matérielle. Notez que les vues d'annonce individuelles ne peuvent pas être activées pour l'accélération matérielle 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 qu'une annonce est chargée, il ne reste qu'à la diffuser auprès de vos utilisateurs. Consultez notre guide sur les annonces natives avancées pour savoir comment procéder.

,

Les annonces natives sont des éléments proposés aux utilisateurs via des composants d'interface utilisateur natifs pour la plate-forme. Elles s'affichent à l'aide des mêmes types de vues que celles utilisées pour créer vos mises en page, et elles peuvent être mises en forme pour correspondre à l'aspect visuel de l'expérience utilisateur. En termes de codage, cela signifie que lorsqu'une annonce native se charge, votre application reçoit un objet NativeAd qui contient ses éléments. En effet, l'application (plutôt que le SDK Google Mobile Ads) est alors chargée de les afficher.

De manière générale, la diffusion d'annonces natives s'effectue en deux étapes : le chargement d'une annonce via le SDK et l'affichage du contenu de l'annonce dans votre application. Cette page concerne l'utilisation du SDK pour charger des annonces natives.

Prerequisites

Charger une annonce

Les annonces natives sont chargées via la classe AdLoader, qui dispose de sa propre classe Builder pour la personnaliser lors de la 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'annonces

Le code suivant montre comment créer une AdLoader pouvant 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 consiste à préparer AdLoader pour le format NativeAd:

forNativeAd()
Appeler cette méthode configure le AdLoader pour qu'il demande des annonces natives. Lorsqu'une annonce a bien été chargée, la méthode onNativeAdLoaded() de l'objet d'écoute est appelée.

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

Utiliser AdListener avec un chargeur d'annonce

Lors de la création de AdLoader, la fonction withAdListener définit un AdListener.

Cette étape est facultative. La méthode utilise un AdListener comme paramètre unique, qui reçoit des rappels de la 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.
})

Chargement des annonces...

Une fois que vous avez créé une AdLoader, vous pouvez l'utiliser pour charger des annonces. Deux méthodes sont disponibles pour effectuer cette opération : loadAd() et loadAds().

La méthode loadAd() envoie une demande pour une seule annonce:

loadAd()
Cette méthode envoie une demande pour une seule annonce.

Java

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

Kotlin

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

La méthode loadAds() 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 les 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 essayer de charger pour la requête. Ce nombre est limité à cinq. Il n'est pas garanti que le SDK affiche le nombre exact d'annonces demandées. Si plusieurs annonces sont renvoyées par un appel à loadAds(), elles sont différentes.

Après un appel à loadAd(), un seul rappel est envoyé aux méthodes d'écouteur définies ci-dessus pour diffuser l'objet d'annonce native ou signaler une erreur.

Après un appel à loadAds(), plusieurs rappels de ce type sont effectués (entre un et nombre d'annonces demandées). Les applications qui demandent plusieurs annonces doivent appeler AdLoader.isLoading() dans leurs intégrations de rappel pour déterminer si le processus de chargement est terminé.

Voici un exemple illustrant 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 ad) {
        ...
        // 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)

Nettoyer

Veillez à utiliser la méthode destroy() pour les annonces natives chargées. Cela libère les 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.

Une autre vérification clé consiste à déterminer si l'activité est détruite. Si c'est le cas, appelez destroy() sur l'annonce renvoyée et 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 ad) {
        // 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()) {
            ad.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 des annonces tests

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

Le moyen le plus simple de charger des annonces tests consiste à 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 lors de chaque demande. Vous pouvez l'utiliser dans vos propres applications à des fins de codage, de test et de débogage. Assurez-vous de 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 Tester les annonces.

Quand demander des annonces ?

Les applications qui affichent des annonces natives sont autorisées à les demander avant leur affichage. Souvent, il s'agit de la pratique recommandée. Une application affichant une liste d'éléments avec des annonces natives mélangées, par exemple, peut charger des annonces natives pour l'ensemble de la liste, sachant que certaines ne seront diffusées qu'une fois que l'utilisateur aura fait défiler la vue et que certaines ne seront tout simplement pas affichées.

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é spécifique:

<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 HW pour en savoir plus sur les options de contrôle de l'accélération matérielle. Notez que les vues d'annonce individuelles ne peuvent pas être activées pour l'accélération matérielle 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 qu'une annonce est chargée, il ne reste qu'à la diffuser auprès de vos utilisateurs. Consultez notre guide sur les annonces natives avancées pour savoir comment procéder.