보안 처리된 신호 시작하기

보안 처리된 신호는 클라이언트 기기에서 수집되어 일부 입찰자와 공유되는 인코딩된 데이터입니다. 이 가이드에서는 IMA SDK를 사용하여 보안 신호를 수집하고 Google Ad Manager에 전송하는 방법을 보여줍니다.

보안 처리된 신호 API에는 iOS용 IMA SDK 버전 3.18.1 이상이 필요합니다.

신호 및 입찰자를 선택하고 보안 처리된 신호 공유를 사용 설정하려면 입찰자와 보안 처리된 신호 공유를 참고하세요.

서드 파티 신호 제공업체 사용

보안 처리된 신호를 사용하려면 앱에 신호 수집기 어댑터 클래스를 배포하여 신호를 수집하고, 인코딩하고, IMA SDK에 전달해야 합니다.

서드 파티 제공업체의 안내에 따라 계정을 설정하고, 프레임워크를 포함하고, 앱에서 보안 신호 어댑터를 설정합니다.

iOS용 IMA SDK는 코드에 추가 변경사항 없이 각 보안 처리된 신호 어댑터를 자동으로 초기화합니다.

다음은 보안 처리된 신호 어댑터를 프로젝트에 추가하는 방법의 예입니다.

맞춤 데이터 전송

서드 파티 신호 제공업체를 사용하는 것 외에도 맞춤 데이터를 사용하여 신호를 수집, 인코딩, 전송할 수 있습니다. 맞춤 데이터로 보안 처리된 신호를 전송하려면 먼저 Ad Manager에서 맞춤 신호를 사용 설정해야 합니다.

각 스트림 요청에 대해 다음을 실행합니다.

  1. 인코딩된 맞춤 데이터를 문자열로 포함하는 IMASecureSignals 객체를 만듭니다.
  2. IMAStreamRequest.secureSignals 속성을 설정하여 스트림 요청에 IMASecureSignals 객체를 추가합니다.

Objective-C

app/ViewController.m

- (void)requestStream {
  // Create a stream request. Use one of "Livestream request" or "VOD request",
  //  depending on your type of stream.
  IMAStreamRequest *request;
  if (kStreamType == StreamTypeLive) {
    // Livestream request. Replace the asset key with your value.
    request = [[IMALiveStreamRequest alloc] initWithAssetKey:kLiveStreamAssetKey
                                                networkCode:kNetworkCode
                                          adDisplayContainer:self.adDisplayContainer
                                                videoDisplay:self.imaVideoDisplay
                                                userContext:nil];
  } else {
    // VOD request. Replace the content source ID and video ID with your values.
    request = [[IMAVODStreamRequest alloc] initWithContentSourceID:kVODContentSourceID
                                                          videoID:kVODVideoID
                                                      networkCode:kNetworkCode
                                                adDisplayContainer:self.adDisplayContainer
                                                      videoDisplay:self.imaVideoDisplay
                                                      userContext:nil];
  }
  
  IMASecureSignals *signals =
      [[IMASecureSignals alloc] initWithCustomData:@"My encoded signal string"];
  request.secureSignals = signals;
  
  [self.adsLoader requestStreamWithRequest:request];
}

Swift

app/ViewController.swift

 func requestStream() {
  // Create a stream request. Use one of "Livestream request" or "VOD request".
  let signals = IMASecureSignals(customData: "My encoded signal string")
  if ViewController.requestType == StreamType.live {
    // Livestream request.
    let request = IMALiveStreamRequest(
      assetKey: ViewController.assetKey,
      networkCode: ViewController.networkCode,
      adDisplayContainer: adDisplayContainer!,
      videoDisplay: imaVideoDisplay,
      userContext: nil)
    request.secureSignals = signals
    adsLoader?.requestStream(with: request)
  } else {
    // VOD stream request.
    let request = IMAVODStreamRequest(
      contentSourceID: ViewController.contentSourceID,
      videoID: ViewController.videoID,
      networkCode: ViewController.networkCode,
      adDisplayContainer: adDisplayContainer!,
      videoDisplay: imaVideoDisplay,
      userContext: nil)
    request.secureSignals = signals
    adsLoader?.requestStream(with: request)
  }
}