Ajout de publicités interstitielles à une application iOS

Le réseau Audience Network vous permet de monétiser vos applications iOS avec des publicités Facebook. Une publicité interstitielle est une publicité plein écran que vous pouvez diffuser au sein de votre application. Suivez ce guide afin d’afficher ce type d’unité publicitaire. Si vous êtes intéressé·e par d’autres types d’unité publicitaire, consultez la liste des types disponibles.

Nous allons mettre en œuvre le placement de la publicité interstitielle suivante.



Étape 1 : charger et afficher la vue de la publicité interstitielle

Étape 2 : vérifier l’enregistrement de l’impression et du clic

Étape 3 : processus de débogage lorsque la publicité n’apparaît pas

Étape 4 : tester l’intégration des publicités

Étape 1 : charger et afficher la vue de la publicité interstitielle

Assurez-vous d’avoir terminé le guide de démarrage et le guide Démarrer avec iOS avant de commencer.

  1. Après avoir créé un projet en suivant le guide de démarrage iOS, importez FBAudienceNetwork, indiquez que ViewController utilise le protocole FBInterstitialAdDelegate et ajoutez une variable d’instance pour l’unité de la publicité interstitielle
    import UIKit
    import FBAudienceNetwork
    
    class ViewController: UIViewController, FBInterstitialAdDelegate {
      private var interstitialAd: FBInterstitialAd?
    }
    #import <UIKit/UIKit.h>
    @import FBAudienceNetwork;
    
    @interface ViewController : UIViewController <FBInterstitialAdDelegate>
    @property (nonatomic, strong) FBInterstitialAd *interstitialAd;
    @end

  2. Ensuite, instanciez l’objet publicitaire dans la méthode viewDidLoad du contrôleur d’affichage et implémentez interstitialAdDidLoad
    override func viewDidLoad() {
      super.viewDidLoad()
    
      // Instantiate an InterstitialAd object.
      // NOTE: the placement ID will eventually identify this as your app. You can ignore it while you are testing
      // and replace it later when you have signed up.
      // While you are using this temporary code you will only get test ads and if you release
      // your code like this to the App Store your users will not receive ads (you will get a 'No Fill' error).
      let interstitialAd = FBInterstitialAd(placementID: "YOUR_PLACEMENT_ID")
      interstitialAd.delegate = self
    
      // For auto play video ads, it's recommended to load the ad at least 30 seconds before it is shown
      interstitialAd.load()
      
      self.interstitialAd = interstitialAd
    }
    
    func interstitialAdDidLoad(_ interstitialAd: FBInterstitialAd) {
      guard interstitialAd.isAdValid else {
        return
      }
      print("Ad is loaded and ready to be displayed")
      interstitialAd.show(fromRootViewController: self)
    }
    - (void)viewDidLoad 
    {
      [super viewDidLoad];
    
      // Instantiate an InterstitialAd object. 
      // NOTE: the placement ID will eventually identify this as your app. You can ignore it while you are testing 
      // and replace it later when you have signed up.
      // While you are using this temporary code you will only get test ads and if you release
      // your code like this to the App Store your users will not receive ads (you will get a 'No Fill' error).
      self.interstitialAd = [[FBInterstitialAd alloc] initWithPlacementID:@"YOUR_PLACEMENT_ID"];
    
      self.interstitialAd.delegate = self;
    
      // For auto play video ads, it's recommended to load the ad at least 30 seconds before it is shown
      [self.interstitialAd loadAd];
    }
    
    - (void)interstitialAdDidLoad:(FBInterstitialAd *)interstitialAd
    {
      NSLog(@"Ad is loaded and ready to be displayed");
    
      if (interstitialAd && interstitialAd.isAdValid) {
        // You can now display the full screen ad using this code:
        [interstitialAd showAdFromRootViewController:self];
      }
    }

  3. L’ID correspondant à YOUR_PLACEMENT_ID est un ID temporaire à des fins de tests uniquement.

    Si vous utilisez cet ID temporaire dans votre code en direct, vos utilisateurs et utilisatrices ne recevront pas de publicité, mais une erreur No Fill. Vous devez revenir ici après le test et remplacer cet ID temporaire par un ID de placement en direct.

    Pour découvrir comment générer un ID de placement en direct, reportez-vous à Configuration d’Audience Network

    Choisissez Appareil en tant que cible de version, puis exécutez le code ci-dessus. Vous devriez voir une fenêtre comme celle-ci :

Lorsque vous diffusez des publicités dans le simulateur, basculez le paramètre sur le mode de test pour afficher les publicités tests. Pour en savoir plus, consultez la section Comment utiliser le mode Test.

N’appelez pas loadAd pour FBInterstitialAd tant que la publicité est affichée à l’écran. Si vous devez charger une autre publicité interstitielle pour une utilisation ultérieure, vous devrez atteindre que l’utilisateur·trice ferme la publicité en cours, par exemple dans le rappel interstitialAdDidClose.

Étape 2 : vérifier l’enregistrement de l’impression et du clic

Si vous le souhaitez, vous pouvez ajouter les fonctions suivantes pour gérer les cas où la publicité est visionnée, cliquée ou fermée par les utilisateur·rices

func interstitialAdWillLogImpression(_ interstitialAd: FBInterstitialAd) {
  print("The user sees the ad")
  // Use this function as indication for a user's impression on the ad.
}

func interstitialAdDidClick(_ interstitialAd: FBInterstitialAd) {
  print("The user clicked on the ad and will be taken to its destination")
  // Use this function as indication for a user's click on the ad.
}

func interstitialAdWillClose(_ interstitialAd: FBInterstitialAd) {
  print("The user clicked on the close button, the ad is just about to close")
  // Consider to add code here to resume your app's flow
}

func interstitialAdDidClose(_ interstitialAd: FBInterstitialAd) {
  print("The user clicked on the close button, the ad is just about to close")
  // Consider to add code here to resume your app's flow
}
- (void)interstitialAdWillLogImpression:(FBInterstitialAd *)interstitialAd 
{
  NSLog(@"The user sees the ad");
  // Use this function as indication for a user's impression on the ad.
}

- (void)interstitialAdDidClick:(FBInterstitialAd *)interstitialAd
{
  NSLog(@"The user clicked on the ad and will be taken to its destination");
  // Use this function as indication for a user's click on the ad.
}

- (void)interstitialAdWillClose:(FBInterstitialAd *)interstitialAd
{
  NSLog(@"The user clicked on the close button, the ad is just about to close");
  // Consider to add code here to resume your app's flow
}

- (void)interstitialAdDidClose:(FBInterstitialAd *)interstitialAd
{
  NSLog(@"Interstitial had been closed");
  // Consider to add code here to resume your app's flow
}

Étape 3 : débogage lorsque la publicité n’apparaît pas

Ajoutez et implémentez la fonction suivante dans votre fichier d’implémentation du contrôleur d’affichage pour gérer les échecs de chargement de la publicité

func interstitialAd(_ interstitialAd: FBInterstitialAd, didFailWithError error: Error) {
  print("Interstitial ad failed to load with error: \(error.localizedDescription)")
}
- (void)interstitialAd:(FBInterstitialAd *)interstitialAd didFailWithError:(NSError *)error
{
  NSLog(@"Interstitial ad failed to load with error: %@", error);
}

Lorsqu’il n’y a aucune publicité à présenter, interstitialAd:didFailWithError: est appelé, accompagné du error.code1001. Si vous utilisez votre propre couche de médiation ou de rapport personnalisée, nous vous conseillons de vérifier la valeur du code et de détecter ce cas. Vous pouvez utiliser un autre réseau publicitaire dans ce cas, mais ne renvoyez pas de demande de publicité immédiatement après.

Étapes suivantes

  • Découvrez nos exemples de code qui montrent le fonctionnement des publicités natives. L’exemple NativeAdSample fait partie du SDK et se situe dans le dossier FBAudienceNetwork/samples. Ouvrez le projet avec Xcode, et lancez-le sur un appareil ou sur le simulateur.