Başlarken

Ön koşullar

  • Xcode 13 veya sonraki sürümler

Bu kılavuzda, tek seferlik rastgele sayı ve monitör almak için PAL SDK'sının nasıl çağrılacağı açıklanmaktadır. oynatma etkinlikleri. Tamamlanan rehberle bağlantılı olarak, PAL tvOS örnek uygulaması.

PAL SDK'sını projenize ekleme

Swift Package Manager'ı kullanarak PAL SDK'sını yükleme

Programatik Erişim Kitaplığı SDK'sı Swift Package'ı destekler. Yönetici'yi kullanabilirsiniz. Şunu izleyin: adımları uygulayın.

  1. Xcode'da şuraya giderek IMA SDK Swift Paketi'ni yükleyin: Dosya > Paket Ekle...

  2. Görüntülenen istemde, IMA SDK Swift Paketi GitHub'ı arayın depo:

    https://github.com/googleads/swift-package-manager-google-programmatic-access-library-tvos
    
  3. Kullanmak istediğiniz PAL SDK Swift Paketi sürümünü seçin. Yeni projeler için Bir Sonraki Ana Sürüm'ü kullanmanızı öneririz.

İşiniz bittikten sonra Xcode, paket bağımlılıklarınızı çözer ve arka planda indirir. Paket ekleme hakkında daha fazla bilgi için görmek için Apple'ın makalesi

PAL SDK'sını manuel olarak indirme ve yükleme

Swift Package Manager'ı kullanmak istemiyorsanız PAL SDK'sını indirip projenize manuel olarak ekleyebilirsiniz.

  1. iOS için PAL SDK'yı indirip çıkarın.
  2. Çerçeveyi projenize dahil etmek için Apple Geliştirici Kılavuzu'ndaki adımları uygulayın.

Tek seferlik rastgele sayı oluştur

Bir "tek seferlik rastgele sayı" PAL tarafından oluşturulan tek bir şifrelenmiş dizedir. PALNonceLoader PAL SDK'sı, her yeni akış isteğine eşlik edilmesini gerektirir yeni oluşturulan tek seferlik rastgele sayılarla gösterilir. Ancak, nonce'lar birden çok reklam için yeniden kullanılabilir aynı akışta olması gerekir.

Aşağıdaki kod snippet'lerinin tümü, ViewController.m PAL tvOS örnek uygulaması.

Tek seferlik rastgele sayı istemek için PAL kitaplığını içe aktararak başlayın:

@import ProgrammaticAccessLibrary;

Daha sonra, PALNonceLoader öğesinin bir örneğini oluşturun ve bu ikisi için saplamalar ekleyin delege yöntemleri:

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

Ardından bir tek seferlik rastgele sayı isteği başlatın, özelliklerini doldurun ve bir tek seferlik rastgele sayı yöneticisini başlatın:

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

Son olarak, oluşturulan nonce'ları günlüğe kaydetmek için nonce yükleyici yetkilerini doldurun:

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

Doğrudan VAST çağrınızı (DVC) yaparken, tek seferlik rastgele sayılarınızı givn parametresinden yararlanın. Tek seferlik rastgele sayı URL açısından güvenlidir. Bunu URL olarak kodlamanız gerekmez.

Son olarak, içerik oynatma oturumu gönderme işlemini yönetmek için bilgi edinip SDK'yı tıklamalıdır. Aşağıdaki örneğe bakın: sendPlaybackStart, sendPlaybackEnd ve sendAdClick yöntemleri:

...

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

Uygulamanızda sendPlaybackStart, "video oynatıcıda" çağrılmalıdır başlat" veya herhangi bir hataya cevaben oynatma ilk kez başlatıldığında, kullanıcı tarafından başlatılan işlem (tıkla oynat) veya uygulama tarafından başlatılan bir işlem (otomatik oynatma), Oynatma sona erdiğinde sendPlaybackEnd çağrılmalı ve sendAdClick, , izleyici bir reklamı her tıkladığında çağrılır.

(İsteğe bağlı) Üçüncü taraf reklam sunucuları üzerinden Google Ad Manager sinyalleri gönderme

Üçüncü taraf reklam sunucusunun Ad Manager isteğini yapılandırın. Siz aşağıdaki adımları tamamlayın. "nonce" parametresi, PAL SDK'sından yayılır. aracı sunucularınıza ve ardından Google Ad Manager'a gönderebilirsiniz. Bu durumda, Google Ad Manager ile daha iyi para kazanma

Üçüncü taraf reklam sunucunuzu, tek seferlik rastgele değeri sunucunun isteği gönderir. Burada, üçüncü taraf reklam sunucusu:

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

Daha fazla bilgi için Google Ad Manager Sunucu tarafı uygulaması rehberini inceleyin.

Ad Manager, tek seferlik rastgele sayı değerini tanımlamak için givn= değerini arar. Üçüncü taraf reklamı sunucunun kendine ait bir makroyu desteklemesi gerekir (örneğin, %%custom_key_for_google_nonce%% ve bunu tek seferlik sorgu parametresiyle değiştirin adımları gerçekleştirebilirsiniz. Bunun nasıl yapılacağı hakkında daha fazla bilgi üçüncü taraf reklam sunucusunun dokümanlarında bulunmalıdır.