Annonces natives

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.

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.

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é les annonces natives sur iOS:

ca-app-pub-3940256099942544/3986624511

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 Annonces tests.

Charger les annonces

Les annonces natives sont chargées GADAdLoader qui envoie des messages à leurs délégués GADAdLoaderDelegate standard.

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 avez besoin d'un ID de bloc d'annonces (vous pouvez utiliser l'ID de test), de constantes à transmettre dans la variable adTypes pour spécifier les formats natifs que vous souhaitez demander, ainsi que les éventuels que vous souhaitez définir dans le paramètre options. La liste des possibilités du paramètre options sont disponibles dans la section Configurer une annonce native Options.

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 loadRequest: dans GADAdLoader accepte les mêmes GADRequest comme 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 avec une seule demande, définissez le paramètre GADMultipleAdsAdLoaderOptions lors de l'initialisation d'un objet 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 les annonces provenant d'un inventaire réservé ou d'acheteurs tiers ne sont pas nécessairement uniques.

N'utilisez pas la classe GADMultipleAdsAdLoaderOptions si vous utilisez la médiation, car les demandes de plusieurs annonces natives ne fonctionnent actuellement pas pour les ID de bloc d'annonces ont été configurées pour la médiation.

Déterminer à quel moment le chargement est terminé

Une fois qu'une application a appelé loadRequest:, elle peut obtenir les résultats de la requête en utilisant appels au:

Une demande pour une seule annonce entraînera 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 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 une notification en cas d'événement lié aux 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 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 loadRequest: à nouveau sur un GADAdLoader tant que le chargement de la requête précédente n'est pas terminé, comme indiqué par adLoaderDidFinishLoading:.

  • Limiter la mise en cache des annonces natives au strict nécessaire. Par exemple, lors de la mise en cache préalable, ne mettre en cache que les annonces qui sont 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 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.