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 suivre le guide complet, téléchargez le Exemple d'application PAL pour tvOS
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 IMA en accédant à Fichier > Ajouter des packages...
Dans l'invite qui s'affiche, recherchez le package GitHub du package Swift du SDK IMA dépôt:
https://github.com/googleads/swift-package-manager-google-programmatic-access-library-tvos
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 nouvelle demande de flux soit accompagnée
par un nonce nouvellement généré. En revanche, les nonces peuvent être réutilisés pour plusieurs
dans un même flux.
Tous les extraits de code ci-dessous sont des modifications
ViewController.m
dans la
Exemple d'application PAL pour tvOS.
Pour demander un nonce, commencez par importer la bibliothèque PAL:
@import ProgrammaticAccessLibrary;
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 (sane) 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;
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.