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.
Dans Xcode, installez le package Swift du SDK PAL en accédant à Fichier > Ajouter des packages...
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
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.
- Téléchargez et extrayez le SDK PAL pour iOS.
- 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.