Les annonces natives sont des composants d'annonces présentés aux utilisateurs via des composants d'interface utilisateur natifs pour la plate-forme. Ils sont affichés à l'aide des mêmes types de vues que vous utilisez déjà pour créer vos mises en page et peuvent être mis en forme pour correspondre à la conception visuelle de votre application.
Lors du chargement d'une annonce native, votre application reçoit un objet d'annonce contenant ses éléments, et l'application (plutôt que le SDK Google Mobile Ads) se charge de les afficher.
De manière générale, la mise en œuvre d'annonces natives s'effectue en deux étapes : charger une annonce à l'aide du SDK, puis afficher le contenu de l'annonce dans votre application.
Cette page explique comment utiliser le SDK pour charger des annonces natives. Remarque : En savoir plus sur les annonces natives dans notre guide des annonces natives
Vous pouvez également consulter des témoignages de réussite de clients : étude de cas 1, étude de cas 2.
Prérequis
- Suivez le guide de démarrage.
Effectuez toujours des tests avec des annonces tests
Lorsque vous créez et testez vos applications, veillez à utiliser des annonces tests plutôt que des annonces de production en ligne.
Le moyen le plus simple de charger des annonces tests consiste à utiliser notre ID de bloc d'annonces tests dédié pour les annonces natives sur Android :
ca-app-pub-3940256099942544/2247696110
Il a été spécialement configuré pour renvoyer des annonces tests pour chaque requête. Vous pouvez l'utiliser dans vos propres applications lors du codage, des tests et du débogage. 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 Google Mobile Ads, consultez Annonces tests.
Charger les annonces
Les annonces natives sont chargées avec la classe AdLoader
, qui possède sa propre classe Builder
pour la personnaliser lors de la création. En ajoutant des écouteurs à AdLoader
lors de sa création, une application spécifie les types d'annonces natives qu'elle est prête à recevoir. Le AdLoader
ne demande alors que ces types.
Créer un adLoader
Le code suivant montre comment créer une 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.
}
})
.withNativeAdOptions(NativeAdOptions.Builder()
// Methods in the NativeAdOptions.Builder class can be
// used here to specify individual options settings.
.build())
.build()
La méthode forNativeAd()
est chargée de préparer le AdLoader
pour le format NativeAd
.
Lorsqu'une annonce a bien été chargée, la méthode onNativeAdLoaded()
de l'objet écouteur est appelée.
Configurer un AdListener avec l'AdLoader (facultatif)
Lors de la création de l'AdLoader
, la fonction withAdListener
définit un AdListener
pour le chargeur. La méthode utilise un AdListener
comme seul paramètre, 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.
})
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 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 également utiliser ses méthodes pour ajouter des informations de ciblage, comme vous le feriez avec d'autres formats d'annonces.AdRequest
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 pour la requête. Ce nombre est plafonné à cinq. 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, mais les annonces provenant d'un inventaire réservé ou d'acheteurs tiers ne sont pas nécessairement uniques.
N'utilisez pas la méthode loadAds()
si vous utilisez la médiation, car les demandes pour plusieurs annonces natives ne fonctionnent actuellement pas pour les ID de bloc d'annonces configurés pour la médiation.
Rappels
Après un appel à loadAd()
, un seul rappel est effectué vers les méthodes d'écouteur précédemment définies 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 pas plus que le nombre d'annonces demandées). Les applications qui demandent 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 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 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. Cela libère les ressources utilisées et empêche 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 toutes les annonces natives existantes qui seront désindexées.
Une autre vérification clé consiste à vérifier si l'activité est détruite. Si c'est le cas, appelez destroy()
sur l'annonce renvoyée et renvoyez 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()
Bonnes pratiques
Suivez ces règles lorsque vous chargez 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()
ouloadAds()
sur unAdLoader
tant que le chargement de la première requête n'est pas terminé.Limiter la mise en cache des annonces natives au strict nécessaire. Par exemple, lors du préchargement, ne mettez en cache que les annonces immédiatement visibles à l'écran. Les annonces natives ont une empreinte mémoire importante. La mise en cache des annonces natives sans les détruire entraîne une utilisation excessive de la mémoire.
Supprimez les annonces natives lorsqu'elles ne sont plus utilisées.
Accélération matérielle pour les annonces vidéo
Pour que les annonces vidéo s'affichent correctement dans vos vues d'annonces natives, l'accélération matérielle doit être activée.
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 Activity qui utilisent des annonces.
Activer l'accélération matérielle
Si l'accélération matérielle est activée de façon globale et que votre application n'adopte pas le comportement attendu, vous pouvez également la contrôler pour chaque activité. Pour activer ou désactiver l'accélération matérielle, utilisez 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>
Pour en savoir plus sur les options permettant de contrôler l'accélération matérielle, consultez le guide d'accélération matérielle. Notez que les vues d'annonces 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 activer l'accélération matérielle.
Afficher votre annonce
Une fois l'annonce chargée, il ne vous reste plus qu'à la présenter à vos utilisateurs. Pour en savoir plus, consultez notre guide avancé sur les composants natifs.