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 classes que celles que vous utilisez déjà dans vos storyboards et peuvent être mis en forme pour correspondre à la conception visuelle de votre application.
Lorsqu'une annonce native se charge, votre application reçoit un objet d'annonce contenant ses composants, et c'est elle, et non le SDK Google Mobile Ads, qui est chargée de les afficher.
De manière générale, l'implémentation des annonces natives se fait 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.
Prérequis
- Suivez le guide de démarrage.
Effectuez toujours des tests 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.
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 iOS:
ca-app-pub-3940256099942544/3986624511
Il a été spécialement configuré pour renvoyer des annonces de test 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 des annonces
Les annonces natives sont chargées avec la classe GADAdLoader
, qui envoie des messages à ses délégués conformément au protocole GADAdLoaderDelegate
.
Initialiser le chargeur d'annonces
Avant de pouvoir charger une annonce, vous devez initialiser le chargeur d'annonces.
Le code suivant montre comment initialiser un GADAdLoader
:
Swift
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
// The UIViewController parameter is optional.
rootViewController: rootViewController,
adTypes: [ .native ],
options: [ ... ad loader options objects ... ])
adLoader.delegate = self
Objective-C
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
// The UIViewController parameter is nullable.
rootViewController:rootViewController
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;
Vous aurez besoin d'un ID de bloc d'annonces (vous pouvez utiliser l'ID de test), de constantes à transmettre dans le tableau adTypes
pour spécifier les formats natifs que vous souhaitez demander, ainsi que de toutes les options que vous souhaitez définir dans le paramètre options
. La liste des valeurs possibles pour le paramètre options
se trouve sur la page Définir les options des annonces natives.
Le tableau adTypes
doit contenir cette constante :
Implémenter le délégué du chargeur d'annonces
Le délégué du chargeur d'annonces doit implémenter des protocoles spécifiques à votre type d'annonce.
Pour les annonces natives, le protocole GADNativeAdLoaderDelegate
inclut un message envoyé au délégué lorsqu'une annonce native est chargée.
Swift
public func adLoader(_ adLoader: GADAdLoader,
didReceive nativeAd: GADNativeAd)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader
didReceiveNativeAd:(GADNativeAd *)nativeAd;
Demander des annonces
Une fois votre GADAdLoader
initialisé, appelez sa méthode loadRequest:
pour demander une annonce:
Swift
adLoader.load(GADRequest())
Objective-C
[self.adLoader loadRequest:[GADRequest request]];
La méthode loadRequest:
dans GADAdLoader
accepte les mêmes objets GADRequest
que les bannières et les interstitiels. Vous pouvez utiliser des objets de requête pour ajouter des informations de ciblage, comme vous le feriez avec d'autres types d'annonces.
Charger plusieurs annonces (facultatif)
Pour charger plusieurs annonces dans une même requête, définissez l'objet GADMultipleAdsAdLoaderOptions
lors de l'initialisation d'un GADAdLoader
.
Swift
let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
// The UIViewController parameter is optional.
rootViewController: self,
adTypes: [ .native ],
options: [ multipleAdOptions ])
Objective-C
GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
[[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
// The UIViewController parameter is nullable.
rootViewController:rootViewController
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ multipleAdsOptions ]];
Le nombre d'annonces par demande 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 les unes des autres, mais il n'est pas garanti que les annonces provenant d'un inventaire réservé ou d'acheteurs tiers soient uniques.
N'utilisez pas la classe GADMultipleAdsAdLoaderOptions
si vous utilisez la médiation, car les requêtes de plusieurs annonces natives ne fonctionnent actuellement pas pour les ID de blocs d'annonces configurés pour la médiation.
Déterminer quand le chargement est terminé
Une fois qu'une application a appelé loadRequest:
, elle peut obtenir les résultats de la requête à l'aide d'appels à:
adLoader:didFailToReceiveAdWithError:
dansGADAdLoaderDelegate
adLoader:didReceiveNativeAd:
dansGADNativeAdLoaderDelegate
Une demande d'une seule annonce génère un appel à l'une de ces méthodes.
Une demande de plusieurs annonces génère au moins un rappel des méthodes ci-dessus, mais pas plus que le nombre maximal d'annonces demandées.
De plus, GADAdLoaderDelegate
propose le rappel adLoaderDidFinishLoading
. Cette méthode de délégué indique qu'un chargeur d'annonces a terminé de charger les annonces et qu'aucune autre annonce ni erreur ne sera signalée pour la requête. Voici un exemple d'utilisation lorsque vous chargez plusieurs annonces natives en même temps:
Swift
class ViewController: UIViewController, GADNativeAdLoaderDelegate {
var adLoader: GADAdLoader!
override func viewDidLoad() {
super.viewDidLoad()
let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
// The UIViewController parameter is optional.
rootViewController: rootViewController,
adTypes: [ .native ],
options: [ multipleAdOptions ])
adLoader.delegate = self
adLoader.load(GADRequest())
}
func adLoader(_ adLoader: GADAdLoader,
didReceive nativeAd: GADNativeAd) {
// A native ad has loaded, and can be displayed.
}
func adLoaderDidFinishLoading(_ adLoader: GADAdLoader) {
// The adLoader has finished loading ads, and a new request can be sent.
}
}
Objective-C
@interface ViewController () <GADNativeAdLoaderDelegate, GADVideoControllerDelegate>
@property(nonatomic, strong) GADAdLoader *adLoader;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
[[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
// The UIViewController parameter is nullable.
rootViewController:rootViewController
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ multipleAdsOptions ]];
self.adLoader.delegate = self;
[self.adLoader loadRequest:[GADRequest request]];
}
- (void)adLoader:(GADAdLoader *)adLoader
didReceiveNativeAd:(GADNativeAd *)nativeAd {
// A native ad has loaded, and can be displayed.
}
- (void)adLoaderDidFinishLoading:(GADAdLoader *) adLoader {
// The adLoader has finished loading ads, and a new request can be sent.
}
@end
Gérer les requêtes ayant échoué
Les protocoles ci-dessus étendent le protocole GADAdLoaderDelegate
, qui définit un message envoyé lorsque le chargement des annonces échoue.
Swift
public func adLoader(_ adLoader: GADAdLoader,
didFailToReceiveAdWithError error: NSError)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader
didFailToReceiveAdWithError:(NSError *)error;
Recevoir des notifications sur les événements des annonces natives
Pour être averti des événements liés aux interactions avec les annonces natives, définissez la propriété déléguée de l'annonce native:
Swift
nativeAd.delegate = self
Objective-C
nativeAd.delegate = self;
Implémentez ensuite GADNativeAdDelegate
pour recevoir les appels de délégué suivants:
Swift
func nativeAdDidRecordImpression(_ nativeAd: GADNativeAd) {
// The native ad was shown.
}
func nativeAdDidRecordClick(_ nativeAd: GADNativeAd) {
// The native ad was clicked on.
}
func nativeAdWillPresentScreen(_ nativeAd: GADNativeAd) {
// The native ad will present a full screen view.
}
func nativeAdWillDismissScreen(_ nativeAd: GADNativeAd) {
// The native ad will dismiss a full screen view.
}
func nativeAdDidDismissScreen(_ nativeAd: GADNativeAd) {
// The native ad did dismiss a full screen view.
}
func nativeAdWillLeaveApplication(_ nativeAd: GADNativeAd) {
// The native ad will cause the app to become inactive and
// open a new app.
}
Objective-C
- (void)nativeAdDidRecordImpression:(GADNativeAd *)nativeAd {
// The native ad was shown.
}
- (void)nativeAdDidRecordClick:(GADNativeAd *)nativeAd {
// The native ad was clicked on.
}
- (void)nativeAdWillPresentScreen:(GADNativeAd *)nativeAd {
// The native ad will present a full screen view.
}
- (void)nativeAdWillDismissScreen:(GADNativeAd *)nativeAd {
// The native ad will dismiss a full screen view.
}
- (void)nativeAdDidDismissScreen:(GADNativeAd *)nativeAd {
// The native ad did dismiss a full screen view.
}
- (void)nativeAdWillLeaveApplication:(GADNativeAd *)nativeAd {
// The native ad will cause the app to become inactive and
// open a new app.
}
Bonnes pratiques
Suivez ces règles lorsque vous chargez des annonces.
Les applications qui utilisent des annonces natives dans une liste doivent précharger la liste des annonces.
Lorsque vous précachez des annonces, videz votre cache et rechargez-le au bout d'une heure.
N'appelez pas
loadRequest:
à nouveau sur unGADAdLoader
tant que le chargement de la requête précédente n'est pas terminé, comme indiqué paradLoaderDidFinishLoading:
.Limitez le stockage en cache des annonces natives à ce qui est 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.
Diffuser votre annonce
Une fois que vous avez chargé une annonce, il ne vous reste plus qu'à l'afficher auprès de vos utilisateurs. Pour en savoir plus, consultez notre guide avancé sur les composants natifs.