Rozpocznij

Wymagania wstępne

  • Xcode 13 lub nowsza

Ten przewodnik opisuje, jak wywołać pakiet SDK PAL w celu otrzymania liczby jednorazowej i monitorowania zdarzenia odtwarzania. Aby kontynuować czynności opisane w przewodniku, pobierz Przykładowa aplikacja na system PAL tvOS

Dodaj pakiet PAL SDK do projektu

Zainstaluj pakiet SDK PAL za pomocą menedżera pakietów Swift

Pakiet SDK biblioteki zautomatyzowanego dostępu obsługuje pakiet wift Menedżera od wersji 2.5.3. Postępuj zgodnie z poniższe czynności, aby zaimportować pakiet Swift.

  1. Zainstaluj w Xcode pakiet IMA SDK Swift. W tym celu przejdź na stronę Plik > Dodaj pakiety...

  2. W wyświetlonym oknie wyszukaj pakiet IMA SDK Swift na GitHubie. repozytorium:

    https://github.com/googleads/swift-package-manager-google-programmatic-access-library-tvos
    
  3. Wybierz wersję pakietu PAL SDK Swift, którego chcesz użyć. W przypadku nowych projektów zalecamy używanie wersji aż do następnej wersji głównej.

Gdy skończysz, Xcode rozstrzygnie zależności pakietów pobiera je w tle. Więcej informacji o dodawaniu pakietu zależności, zobacz Artykuł Apple

Ręcznie pobierz i zainstaluj pakiet PAL SDK

Jeśli nie chcesz korzystać z menedżera pakietów Swift, możesz pobrać pakiet SDK PAL ręcznie dodać ją do projektu.

  1. Pobierz i rozpakuj pakiet SDK PAL na iOS
  2. Aby włączyć platformę do projektu, postępuj zgodnie z przewodnikiem Apple dla programistów.

Wygeneruj liczbę jednorazową

Liczba jednorazowa to pojedynczy zaszyfrowany ciąg znaków wygenerowany przez system PAL przy użyciu PALNonceLoader Pakiet PAL SDK wymaga, aby każdemu nowemu żądaniu strumienia towarzyszyło każde nowe żądanie strumienia przez nowo wygenerowaną liczbę jednorazową. Liczby jednorazowe można jednak wykorzystać ponownie w wielu reklamach w ramach tego samego strumienia.

Wszystkie poniższe fragmenty kodu stanowią modyfikację ViewController.m w: Przykładowa aplikacja na system PAL tvOS

Aby zażądać liczby jednorazowej, zacznij od zaimportowania biblioteki PAL:

@import ProgrammaticAccessLibrary;

Następnie utwórz instancję PALNonceLoader i dodaj atramenty do obu z nich. metody przekazywania:

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

Następnie zainicjuj żądanie jednorazowe, uzupełnij jego właściwości i użyj go do zainicjuj menedżera liczby jednorazowej:

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

Na koniec uzupełnij delegacje funkcji wczytywania jednorazowej do logowania generowanych jednorazowo:

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

Wykonując bezpośrednie wywołanie VAST (DVC), ustaw liczbę jednorazową jako wartość parametru givn. Wartość jednorazowa jest bezpieczna w postaci adresu URL – nie musisz jej kodować.

Trzeba również dodać metody do obsługi wysyłania sesji odtwarzania treści informacje i kliknięcia prowadzące do pakietu SDK. Poniżej znajduje się przykład implementacji metody sendPlaybackStart, sendPlaybackEnd i 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];
}

W Twojej implementacji funkcja sendPlaybackStart powinna być wywoływana dla „odtwarzacza wideo” uruchom” podczas pierwszego uruchomienia odtwarzania, w odpowiedzi działanie inicjowane przez użytkownika (kliknij, aby odtworzyć) lub działanie inicjowane przez aplikację (autoodtwarzanie); Po zakończeniu odtwarzania powinna być wywoływana funkcja sendPlaybackEnd, a usługa sendAdClick powinna musi być wywoływana po każdym kliknięciu reklamy przez użytkownika.

(Opcjonalnie) Wysyłanie sygnałów Google Ad Managera przez serwery reklamowe firm zewnętrznych

Skonfiguruj żądanie serwera reklamowego firmy zewnętrznej na potrzeby Ad Managera. Po wykonaj poniższe czynności, parametr jednorazowy zostanie rozpowszechniony z pakietu SDK PAL, przez serwery pośrednie, a potem do Google Ad Manager. Dzięki temu zarabiać więcej dzięki Google Ad Managerowi.

Skonfiguruj serwer reklamowy firmy zewnętrznej, tak aby zawierał wartość jednorazową w nagłówku do Ad Managera. Oto przykład tagu reklamy skonfigurowanego w tagu serwer reklamowy firmy zewnętrznej:

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

Więcej informacji znajdziesz w artykule o implementacji Google Ad Managera po stronie serwera .

Ad Manager wyszukuje wartość jednorazową za pomocą parametru givn=. Reklama zewnętrzna serwer musi obsługiwać własne makro, takie jak %%custom_key_for_google_nonce%% i zastąp go parametrem zapytania z liczbą jednorazową podane w poprzednim kroku. Więcej informacji, jak to zrobić powinny być dostępne w dokumentacji serwera reklamowego firmy zewnętrznej.