Commencer

Prérequis

  • Xcode 13 ou version ultérieure.

Ce guide explique comment appeler le SDK PAL pour recevoir un nonce et surveiller des événements de lecture. Pour voir une application exemple qui utilise la PAL pour générer un nonce, téléchargez l'exemple iOS sur GitHub.

Ajouter le SDK PAL à votre projet

Installer le SDK PAL à l'aide du gestionnaire de packages Swift

Le SDK de la bibliothèque d'accès programmatique est compatible avec le package Swift Manager à partir de la version 2.5.3. Suivez le les étapes ci-dessous pour importer le package Swift.

  1. Dans Xcode, installez le package Swift du SDK PAL en accédant à Fichier > Ajouter des packages...

  2. Dans l'invite qui s'affiche, recherchez le package GitHub du package Swift du SDK PAL. dépôt:

    https://github.com/googleads/swift-package-manager-google-programmatic-access-library-ios
    
  3. Sélectionnez la version du package Swift du SDK PAL que vous souhaitez utiliser. Pour les nouveaux projets, nous vous recommandons d'utiliser l'option Jusqu'à la prochaine version majeure.

Une fois que vous avez terminé, Xcode résout vos dépendances de package et les télécharge en arrière-plan. Pour savoir comment ajouter un package les dépendances, consultez article d'Apple.

Télécharger et installer manuellement le SDK PAL

Si vous ne voulez pas utiliser Swift Package Manager, vous pouvez télécharger le SDK PAL et manuellement à votre projet.

  1. Téléchargez et extrayez le SDK PAL pour iOS.
  2. Suivez le Guide du développeur Apple pour intégrer le framework à votre projet.

Générer un nonce

Un "nonce" est une chaîne chiffrée unique générée par la PAL à l'aide du PALNonceLoader Le SDK PAL exige que chaque nouveau flux soit accompagné d'un un nonce récemment généré. Toutefois, les nonces peuvent être réutilisés pour plusieurs demandes d'annonces dans le même flux.

Tous les extraits de code ci-dessous sont des modifications de ViewController.m dans le Exemple d'application PAL pour iOS.

Pour demander un nonce, commencez par importer la bibliothèque PAL:

@import ProgrammaticAccessLibrary;

Vous gardez le contrôle sur le corrélateur de flux, ou &scor, qui doit être sont réinitialisés une fois pour chaque nouveau flux. Toutes les demandes d'annonces d'un même flux doivent être partagées la même valeur de corrélateur de flux et PALNonceLoader pour la limitation de la fréquence d'exposition et d'exclusion réciproque pour fonctionner correctement.

Ensuite, créez une instance de PALNonceLoader et ajoutez des bouchons pour les deux méthodes de délégation:

@interface ViewController () <PALNonceLoaderDelegate>
// The nonce loader to use for nonce requests.
@property(nonatomic) PALNonceLoader *nonceLoader;
// The view in which a video would play. In this sample, it is mocked for
// simplification.
@property(nonatomic, weak) IBOutlet UIView *videoView;
@end
...
- (void) viewDidLoad {
  [super viewDidLoad];
  // The default value for 'allowStorage' and 'directedForChildOrUnknownAge' is
  // 'NO', but should be updated once the appropriate consent has been gathered.
  // Publishers should either integrate with a CMP or use a different method to
  // handle storage consent.
  PALSettings *settings = [[PALSettings alloc] init];
  settings.allowStorage = YES;
  settings.directedForChildOrUnknownAge = NO;

  self.nonceLoader = [[PALNonceLoader alloc] initWithSettings:settings];
  self.nonceLoader.delegate = self;
}

#pragma mark - PALNonceLoaderDelegate methods

- (void)nonceLoader:(PALNonceLoader *)nonceLoader
            withRequest:(PALNonceRequest *)request
    didLoadNonceManager:(PALNonceManager *)nonceManager {
}

- (void)nonceLoader:(PALNonceLoader *)nonceLoader
         withRequest:(PALNonceRequest *)request
    didFailWithError:(NSError *)error {
}

Ensuite, lancez une requête nonce, renseignez ses propriétés et utilisez-la pour initialisez un gestionnaire nonce:

@interface ViewController () <PALNonceLoaderDelegate>
// The nonce loader to use for nonce requests.
@property(nonatomic) PALNonceLoader *nonceLoader;
// The nonce manager result from the last successful nonce request.
@property(nonatomic) PALNonceManager *nonceManager;
// The view in which a video would play. In this sample, it is mocked for
// simplification.
@property(nonatomic, weak) IBOutlet UIView *videoView;
@end
...
- (void)viewDidLoad {
  ...
  self.nonceLoader.delegate = self;
  [self requestNonceManager];
}
...
#pragma mark - UI Callback methods

/**
 * Requests a new nonce manager with a request containing arbitrary test values
 * like a user might supply. Displays the nonce or error on success. This
 * should be called once per stream.
 *
 * The PALNonceRequest parameters set here are example parameters.
 * You should set your parameters based on your own app characteristics.
 */
- (void)requestNonceManager {
  PALNonceRequest *request = [[PALNonceRequest alloc] init];
  request.continuousPlayback = PALFlagOff;
  request.descriptionURL = [NSURL URLWithString:@"https://example.com/desc?key=val"];
  request.iconsSupported = YES;
  request.playerType = @"AwesomePlayer";
  request.playerVersion = @"4.2.1";
  request.PPID = @"123987456";
  request.sessionID = @"Sample SID";
  // Sample API framework integer. See reference docs for more details.
  NSInteger SampleAPIFramework = 501;
  request.supportedApiFrameworks = [NSMutableSet setWithArray:@[ SampleAPIFramework ]];
  request.videoPlayerHeight = 480;
  request.videoPlayerWidth = 640;
  request.willAdAutoPlay = PALFlagOn;
  request.willAdPlayMuted = PALFlagOff;
  request.OMIDPartnerName = @"SamplePartner";
  request.OMIDPartnerVersion = @"6.2.1";

  if (self.nonceManager) {
    // Detach the old nonce manager's gesture recognizer before destroying it.
    [self.videoView removeGestureRecognizer:self.nonceManager.gestureRecognizer];
    self.nonceManager = nil;
  }
  [self.nonceLoader loadNonceManagerWithRequest:request];
}

Enfin, renseignez les délégués du chargeur de nonce pour consigner les nonces générés:

#pragma mark - PALNonceLoaderDelegate methods

- (void)nonceLoader:(PALNonceLoader *)nonceLoader
            withRequest:(PALNonceRequest *)request
    didLoadNonceManager:(PALNonceManager *)nonceManager {
  NSLog(@"Programmatic access nonce: %@", nonceManager.nonce);
  // Capture the created nonce manager and attach its gesture recognizer to the video view.
  self.nonceManager = nonceManager;
  [self.videoView addGestureRecognizer:self.nonceManager.gestureRecognizer];
}

- (void)nonceLoader:(PALNonceLoader *)nonceLoader
         withRequest:(PALNonceRequest *)request
    didFailWithError:(NSError *)error {
  NSLog(@"Error generating programmatic access nonce: %@", error);
}

Lorsque vous effectuez votre appel VAST direct, définissez votre nonce comme valeur sur le Paramètre givn. Le nonce est sécurisé en URL. Vous n'avez pas besoin de l'encoder en URL.

Enfin, vous devez ajouter des méthodes pour gérer l'envoi de sessions de lecture de contenu et des clics vers le SDK. Consultez l'exemple d'implémentation suivant : méthodes sendPlaybackStart, sendPlaybackEnd et sendAdClick:

...
// Reports the start of playback for the current content session.
- (void)sendPlaybackStart {
  [self.nonceManager sendPlaybackStart];
}

// Reports the end of playback for the current content session.
- (void)sendPlaybackEnd {
  [self.nonceManager sendPlaybackEnd];
}

// Reports an ad click for the current nonce manager, if not nil.
- (void)sendAdClick {
  [self.nonceManager sendAdClick];
}

Dans votre implémentation, sendPlaybackStart doit être appelé sur le "lecteur vidéo". début" lorsque la lecture démarre pour la première fois, en réponse à une alerte action déclenchée par l'utilisateur (click-to-play) ou déclenchée par l'application (lecture automatique), sendPlaybackEnd doit être appelé à la fin de la lecture, et sendAdClick doit être appelé chaque fois que l'internaute clique sur une annonce.

(Facultatif) Envoyer des signaux Google Ad Manager via des ad servers tiers

Configurez la demande de l'ad server tiers pour Ad Manager. Après avoir suivez les étapes suivantes, le paramètre nonce se propage à partir du SDK PAL, entre vos serveurs intermédiaires, puis vers Google Ad Manager. Cela permet une meilleure monétisation via Google Ad Manager.

Configurez votre ad server tiers pour inclure le nonce dans le champ à Ad Manager. Voici un exemple de tag d'emplacement publicitaire configuré à l'intérieur de l'ad server tiers:

https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...

Pour en savoir plus, consultez l'article Implémentation côté serveur de Google Ad Manager guide de démarrage.

Ad Manager recherche givn= pour identifier la valeur nonce. L'annonce tierce serveur doit prendre en charge une macro qui lui est propre, telle que %%custom_key_for_google_nonce%% et remplacez-le par le paramètre de requête nonce. que vous avez fournies à l'étape précédente. En savoir plus sur la marche à suivre doit être disponible dans la documentation de l'ad server tiers.