Ö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.
Xcode'da şuraya giderek IMA SDK Swift Paketi'ni yükleyin: Dosya > Paket Ekle...
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
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.
- iOS için PAL SDK'yı indirip çıkarın.
- Ç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.