Jetzt starten

Vorbereitung

  • Xcode 13 oder höher

In diesem Leitfaden wird beschrieben, wie das PAL SDK aufgerufen wird, um eine Nonce zu empfangen und zu überwachen Wiedergabe-Ereignisse. So zeigen Sie eine Beispiel-App, die mit PAL eine Nonce generiert: Laden Sie das iOS-Beispiel von GitHub herunter.

PAL SDK zum Projekt hinzufügen

PAL SDK mit Swift Package Manager installieren

Das Programmatic Access Library SDK unterstützt das Swift-Paket. Manager ab Version 2.5.3. Folgen Sie um das Swift-Paket zu importieren.

  1. Installieren Sie in Xcode das PAL SDK Swift Package, indem Sie Datei > Pakete hinzufügen...

  2. Suchen Sie in der angezeigten Eingabeaufforderung nach dem PAL SDK Swift Package GitHub Repository:

    https://github.com/googleads/swift-package-manager-google-programmatic-access-library-ios
    
  3. Wählen Sie die Version des PAL SDK Swift-Pakets aus, das Sie verwenden möchten. Für neue Projekte empfehlen wir die Verwendung von Bis zur nächsten Hauptversion.

Sobald Sie fertig sind, löst Xcode Ihre Paketabhängigkeiten auf werden im Hintergrund heruntergeladen. Weitere Informationen zum Hinzufügen eines Pakets Abhängigkeiten, siehe Artikel von Apple

PAL SDK manuell herunterladen und installieren

Wenn Sie Swift Package Manager nicht verwenden möchten, können Sie das PAL SDK herunterladen und Ihrem Projekt manuell hinzufügen.

  1. Laden Sie das PAL SDK for iOS herunter und extrahieren Sie es.
  2. Folgen Sie dem Apple Developer Guide, um das Framework in Ihr Projekt zu integrieren.

Nonce generieren

Eine „Nonce“ ist ein einzelner verschlüsselter String, der von PAL mithilfe der Methode PALNonceLoader Für das PAL SDK muss jeder neue Stream mit einem neu generierte Nonce. Nonces können jedoch für mehrere Anzeigenanfragen wiederverwendet werden. innerhalb desselben Streams.

Alle folgenden Code-Snippets sind Änderungen an ViewController.m in der Beispiel-App für PAL iOS.

Wenn Sie eine Nonce anfordern möchten, importieren Sie zuerst die PAL-Bibliothek:

@import ProgrammaticAccessLibrary;

Sie haben weiterhin die Kontrolle über den Stream-Korrelator oder &scor. wird bei jedem neuen Stream einmal zurückgesetzt. Alle Anzeigenanfragen für denselben Stream sollten denselben PALNonceLoader- und Stream-Correlator-Wert für das Frequency Capping und Konkurrenzausschluss-Funktionen nicht ordnungsgemäß funktionieren.

Erstellen Sie als Nächstes eine Instanz von PALNonceLoader und fügen Sie Stubs für die beiden hinzu. delegate-Methoden:

@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 {
}

Initiieren Sie dann eine Nonce-Anfrage, füllen Sie die Attribute aus und Initialisieren Sie einen Nonce-Manager:

@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];
}

Geben Sie zuletzt die Nonce-Loader-Delegierungen ein, um generierte Nonces zu protokollieren:

#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);
}

Wenn Sie den direkten VAST-Aufruf (DVC) ausführen, legen Sie die Nonce als Wert in der givn-Parameter. Die Nonce ist URL-sicher und muss nicht URL-codiert werden.

Schließlich müssen Sie Methoden zum Senden der Wiedergabesitzung hinzufügen, und Klicks auf das SDK. Im folgenden Beispiel sehen Sie, wie die API Methoden sendPlaybackStart, sendPlaybackEnd und 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];
}

In Ihrer Implementierung sollte sendPlaybackStart für „Videoplayer“ aufgerufen werden. starten“ da die Wiedergabe zum ersten Mal eingeleitet wird. Dies geschieht als Reaktion auf eine eine vom Nutzer initiierte Aktion (Click-to-Play) oder eine von der App initiierte Aktion (Autoplay), sendPlaybackEnd sollte aufgerufen werden, wenn die Wiedergabe endet, und sendAdClick sollte wird jedes Mal aufgerufen, wenn der Betrachter auf eine Anzeige klickt.

(Optional) Google Ad Manager-Signale über Ad-Server eines Drittanbieters senden

Konfigurieren Sie die Anfrage des Ad-Servers eines Drittanbieters an Ad Manager. Nachdem Sie führen Sie die folgenden Schritte aus, wird der Nonce-Parameter vom PAL SDK weitergegeben, zwischen den Servern und dann an Google Ad Manager übertragen werden. Dies ermöglicht mit Google Ad Manager zu optimieren.

Konfigurieren Sie den Ad-Server eines Drittanbieters so, dass die Nonce im an Ad Manager senden. Hier ein Beispiel für ein Anzeigen-Tag, das im eines Drittanbieter-Ad-Servers:

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

Weitere Informationen finden Sie unter Serverseitige Google Ad Manager-Implementierung .

In Ad Manager wird nach givn= gesucht, um den Nonce-Wert zu ermitteln. Drittanbieteranzeige muss ein eigenes Makro unterstützen, z. B. %%custom_key_for_google_nonce%% und ersetzen Sie es durch den Nonce-Abfrageparameter. die Sie im vorherigen Schritt angegeben haben. Weitere Informationen dazu, wie Sie dies erreichen in der Dokumentation des Drittanbieter-Ad-Servers verfügbar sein.