เริ่มต้นใช้งาน

ข้อกำหนดเบื้องต้น

  • Xcode 13 ขึ้นไป

คู่มือนี้อธิบายวิธีเรียกใช้ PAL SDK เพื่อรับ Nonce และการตรวจสอบ เหตุการณ์การเล่น หากต้องการดูตัวอย่างแอปที่ใช้ PAL ในการสร้าง Nonce ดาวน์โหลดตัวอย่าง iOS จาก GitHub

เพิ่ม PAL SDK ลงในโปรเจ็กต์

ติดตั้ง PAL SDK โดยใช้ Swift Package Manager

SDK ไลบรารีการเข้าถึงแบบเป็นโปรแกรมรองรับ Swift Package Manager เริ่มต้นในเวอร์ชัน 2.5.3 ทำตาม ขั้นตอนด้านล่างเพื่อนำเข้าแพ็กเกจ Swift

  1. ใน Xcode ให้ติดตั้งแพ็กเกจ PAL SDK Swift โดยไปที่ ไฟล์ > เพิ่มแพ็กเกจ...

  2. ในข้อความแจ้งที่ปรากฏขึ้น ให้ค้นหา PAL SDK Swift Package GitHub ที่เก็บ:

    https://github.com/googleads/swift-package-manager-google-programmatic-access-library-ios
    
  3. เลือกเวอร์ชันของแพ็กเกจ PAL SDK Swift ที่ต้องการใช้ สําหรับโปรเจ็กต์ใหม่ เราขอแนะนําให้ใช้เวอร์ชันหลักถัดไป

เมื่อเสร็จแล้ว Xcode จะแปลงทรัพยากร Dependency ของแพ็กเกจและ ดาวน์โหลดวิดีโอเหล่านั้นในพื้นหลัง ดูรายละเอียดเพิ่มเติมเกี่ยวกับวิธีเพิ่มแพ็กเกจ ทรัพยากร Dependency โปรดดู บทความของ Apple

ดาวน์โหลดและติดตั้ง PAL SDK ด้วยตนเอง

หากไม่ต้องการใช้ Swift Package Manager คุณสามารถดาวน์โหลด PAL SDK และ เพิ่มลงในโปรเจ็กต์ด้วยตนเอง

  1. ดาวน์โหลดและแตกไฟล์ PAL SDK สำหรับ iOS
  2. ทำตามคู่มือนักพัฒนาซอฟต์แวร์ Apple เพื่อรวมเฟรมเวิร์กไว้ในโครงการ

สร้าง Nonce

"ผลกระทบ" เป็นสตริงที่เข้ารหัสเพียงสตริงเดียวซึ่ง PAL สร้างขึ้นโดยใช้ PALNonceLoader PAL SDK กำหนดให้สตรีมใหม่แต่ละรายการต้องมี ค่า Nonce ที่สร้างขึ้นใหม่ อย่างไรก็ตาม องค์ประกอบที่ไม่ใช่ CSS สามารถใช้ซ้ำสำหรับคำขอโฆษณาหลายรายการได้ ภายในสตรีมเดียวกัน

ข้อมูลโค้ดทั้งหมดด้านล่างเป็นการแก้ไข ViewController.m ใน ตัวอย่างแอปพลิเคชัน PAL iOS

หากต้องการขอ Nonce ให้เริ่มด้วยการนำเข้าไลบรารี PAL ดังนี้

@import ProgrammaticAccessLibrary;

คุณยังคงควบคุมสหสัมพันธ์ของสตรีมหรือ &scor ได้ ซึ่งควรเป็น รีเซ็ต 1 ครั้งสำหรับสตรีมใหม่แต่ละรายการ คำขอโฆษณาทั้งหมดของสตรีมเดียวกันควรแชร์ร่วมกัน ค่า PALNonceLoader และค่าสหสัมพันธ์ของสตรีมเดียวกันสำหรับการกำหนดความถี่สูงสุดและ ฟีเจอร์การยกเว้นโฆษณาของคู่แข่งเพื่อให้ทำงานได้อย่างถูกต้อง

ถัดไป ให้สร้างอินสแตนซ์ของ PALNonceLoader แล้วเพิ่มต้นขั้วสำหรับทั้ง 2 ตัว วิธีการมอบสิทธิ์:

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

จากนั้นเริ่มต้นคำขอ Nonce เติมข้อมูลพร็อพเพอร์ตี้ และใช้เพื่อ เริ่มต้น 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];
}

สุดท้าย ป้อนข้อมูลการมอบสิทธิ์ Nonce Loader ไปยังบันทึก nonces ที่สร้างขึ้น โดยใช้คำสั่งต่อไปนี้

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

เมื่อเรียก VAST โดยตรง (DVC) ให้ตั้งค่า Nonce เป็นค่าใน พารามิเตอร์ givn Nonce จะต้องปลอดภัยคือ URL โดยไม่ต้องเข้ารหัส URL

สุดท้าย คุณต้องเพิ่มวิธีการจัดการการส่งเซสชันการเล่นเนื้อหา และการคลิกไปยัง SDK ดูตัวอย่างต่อไปนี้ในการใช้ เมธอด sendPlaybackStart, sendPlaybackEnd และ 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];
}

ในการใช้งาน ควรเรียก sendPlaybackStart ใน "โปรแกรมเล่นวิดีโอ เริ่มต้น" เมื่อการเล่นเริ่มต้นขึ้นเป็นครั้งแรก เพื่อตอบสนองต่อ การทำงานที่เริ่มต้นโดยผู้ใช้ (คลิกเพื่อเล่น) หรือการทำงานที่เริ่มต้นโดยแอป (เล่นอัตโนมัติ) ควรเรียก sendPlaybackEnd เมื่อเล่นจบ และ sendAdClick ควร จะถูกเรียกทุกครั้งที่ผู้ชมคลิกโฆษณา

(ไม่บังคับ) ส่งสัญญาณ Google Ad Manager ผ่านเซิร์ฟเวอร์โฆษณาบุคคลที่สาม

กำหนดค่าคำขอของเซิร์ฟเวอร์โฆษณาบุคคลที่สามสำหรับ Ad Manager หลังจากที่คุณ โปรดทำตามขั้นตอนต่อไปนี้ พารามิเตอร์ Nonce จะเผยแพร่จาก PAL SDK ผ่านเซิร์ฟเวอร์ตัวกลาง จากนั้นไปยัง Google Ad Manager วิธีนี้ช่วยให้ การสร้างรายได้ผ่าน Google Ad Manager ได้ดีขึ้น

กำหนดค่าเซิร์ฟเวอร์โฆษณาบุคคลที่สามให้รวมค่า Nonce ไว้ใน ไปยัง Ad Manager ต่อไปนี้เป็นตัวอย่างแท็กโฆษณาที่กำหนดค่าภายในแท็ก เซิร์ฟเวอร์โฆษณาบุคคลที่สาม:

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

โปรดดูรายละเอียดเพิ่มเติมที่การใช้งานฝั่งเซิร์ฟเวอร์ของ Google Ad Manager

Ad Manager จะมองหา givn= เพื่อระบุค่า Nonce โฆษณาของบุคคลที่สาม เซิร์ฟเวอร์ต้องรองรับมาโครของตนเอง เช่น %%custom_key_for_google_nonce%% และแทนที่ด้วยพารามิเตอร์การค้นหา Nonce ที่คุณให้ไว้ในขั้นตอนก่อนหน้า ข้อมูลเพิ่มเติมเกี่ยวกับวิธีดำเนินการนี้ มีอยู่ในเอกสารประกอบของเซิร์ฟเวอร์โฆษณาบุคคลที่สาม