시작하기

기본 요건

  • Xcode 13 이상

이 가이드에서는 PAL SDK를 호출하여 nonce와 모니터를 수신하는 방법을 설명합니다. 지정할 수 있습니다. 전체 가이드를 따르려면 PAL tvOS 샘플 애플리케이션

프로젝트에 PAL SDK 추가

Swift Package Manager를 사용하여 PAL SDK 설치

프로그래매틱 액세스 라이브러리 SDK는 Swift 패키지 지원 Manager를 사용할 수도 있습니다. Swift 패키지를 가져오려면 아래 단계를 따르세요.

  1. Xcode에서 파일 > 패키지 추가...를 클릭합니다.

  2. 메시지가 표시되면 IMA SDK Swift Package GitHub를 검색합니다. 저장소:

    https://github.com/googleads/swift-package-manager-google-programmatic-access-library-tvos
    
  3. 사용할 PAL SDK Swift 패키지의 버전을 선택합니다. 새 프로젝트의 경우 Up to Next Major Version(최대 다음 메이저 버전)을 사용하는 것이 좋습니다.

완료되면 Xcode가 패키지 종속 항목을 확인하고 백그라운드에서 다운로드됩니다. 패키지 추가 방법에 관한 자세한 내용은 자세한 내용은 Apple의 도움말

수동으로 PAL SDK 다운로드 및 설치

Swift Package Manager를 사용하지 않으려면 PAL SDK를 다운로드하고 프로젝트에 수동으로 추가합니다.

  1. iOS용 PAL SDK를 다운로드하고 추출합니다.
  2. Apple 개발자 가이드에 따라 프로젝트에 프레임워크를 통합하세요.

nonce 생성

'nonce' PAL이 PAL이 생성하는 암호화된 단일 문자열입니다. PALNonceLoader PAL SDK는 새로운 각 스트림 요청을 함께 보내야 합니다. 새로 생성된 nonce로 변환합니다. 하지만 nonce는 여러 광고에 재사용할 수 있음 요청을 전송하는 데 사용됩니다.

아래의 모든 코드 스니펫은 ViewController.m PAL tvOS 샘플 애플리케이션

nonce를 요청하려면 먼저 PAL 라이브러리를 가져옵니다.

@import ProgrammaticAccessLibrary;

다음으로 PALNonceLoader의 인스턴스를 만들고 두 인스턴스의 스텁을 추가합니다. 위임 메서드:

@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 관리자를 초기화합니다.

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

마지막으로, 생성된 nonce를 로그하기 위해 nonce 로더 위임을 채웁니다.

#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)을 호출할 때는 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를 통해 수익을 창출할 수 있습니다

서버의 요청을 Ad Manager에 요청하는 것입니다 다음은 외부 애드 서버인

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

자세한 내용은 Google Ad Manager 서버 측 구현 가이드를 참조하세요.

Ad Manager는 nonce 값을 식별하기 위해 givn=를 찾습니다. 타사 광고 서버는 자체 매크로를 지원해야 함(예: %%custom_key_for_google_nonce%%)하고 nonce 쿼리 매개변수로 바꿉니다. 사용할 수 있습니다 이 작업을 수행하는 방법에 대해 자세히 알아보기 외부 광고 서버 설명서에 나와 있습니다.