IMA DAI SDK 시작하기

IMA SDK를 사용하면 웹사이트와 앱에 멀티미디어 광고를 쉽게 통합할 수 있습니다. IMA SDK는 모든 VAST 호환 광고 서버에서 광고를 요청하고 앱에서 광고 재생을 관리할 수 있습니다. IMA DAI SDK를 사용하면 앱에서 광고 및 콘텐츠 동영상(VOD 또는 라이브 콘텐츠)에 대한 스트림을 요청합니다. 그러면 SDK가 결합된 동영상 스트림을 반환하므로 앱 내에서 광고 동영상과 콘텐츠 동영상 간에 전환을 관리할 필요가 없습니다.

관심 있는 DAI 솔루션을 선택합니다

DAI 광고 모음 게재

IMA SDK를 사용하면 웹사이트와 앱에 멀티미디어 광고를 쉽게 통합할 수 있습니다. IMA SDK는 모든 VAST 호환 광고 서버에서 광고를 요청하고 앱에서 광고 재생을 관리할 수 있습니다. IMA DAI SDK를 사용하면 앱에서 광고 및 콘텐츠 동영상(VOD 또는 라이브 콘텐츠)에 대한 스트림을 요청합니다. 그러면 SDK가 결합된 동영상 스트림을 반환하므로 앱 내에서 광고 동영상과 콘텐츠 동영상 간에 전환을 관리할 필요가 없습니다.

이 가이드에서는 라이브 및 VOD 스트림 재생을 위해 동영상 플레이어와 함께 IMA DAI SDK를 사용하여 DAI 광고 모음 게재 스트림을 재생하는 방법을 설명합니다. 완성된 샘플 통합을 보거나 따라 하려면 Pod 제공 예를 다운로드하세요.

IMA DAI 광고 모음 게재 개요

  • StreamRequest: Google의 광고 서버에 대한 스트림 요청을 정의하는 객체입니다. 포드 게재를 사용 설정하려면 ImaSdkFactory.createPodStreamRequest() 또는 ImaSdkFactory.createPodVodStreamRequest()를 사용하여 만들어야 합니다. 이러한 메서드에는 네트워크 코드가 필요하며 createPodStreamRequest에는 맞춤 애셋 키와 선택적 API 키도 필요합니다. 둘 다 다른 선택적 매개변수를 포함합니다.

  • StreamManager: 동영상 스트림과 IMA DAI SDK 간의 통신(예: 추적 핑 실행 및 스트림 이벤트를 게시자에게 전달)을 처리하는 객체입니다.

기본 요건

광고 모음 게재 변수 설정

광고 모음 게재에 필요한 모든 변경사항은 SampleAdsWrapper.java에서 이루어집니다. 첫 번째 단계는 상수 변수를 업데이트하는 것입니다.

추가할 광고 모음 스트림 요청 상수는 다음과 같습니다.

  • STREAM_URL: 라이브 스트림에만 사용됨 - 매니페스트 조작자 또는 광고 모음 게재를 사용하는 서드 파티 파트너가 제공한 동영상 스트림 URL입니다. 요청하기 전에 IMA DAI SDK에서 제공한 스트림 ID를 삽입해야 합니다. 이 경우 스트림 URL에는 요청하기 전에 스트림 ID로 대체되는 자리표시자 "[[STREAMID]]"가 포함됩니다.

  • NETWORK_CODE: Ad Manager 360 계정의 네트워크 코드입니다.

  • CUSTOM_ASSET_KEY: 라이브 스트림에만 사용 - Ad Manager 360에서 포드 게재 이벤트를 식별하는 맞춤 확장 소재 키입니다. 매니페스트 조작기 또는 서드 파티 광고 모음 게재 파트너가 이를 만들 수 있습니다.

  • API_KEY: 라이브 스트림에만 사용 - IMA DAI SDK에서 스트림 ID를 검색하는 데 필요할 수 있는 선택적 API 키입니다.

Android DAI BasicExample은 다양한 스트림 유형을 재생하도록 설계되었지만 포드 게재의 경우 단일 스트림만 재생하도록 설정됩니다. 예시의 변수 섹션을 다음과 같이 변경합니다.

/** This class adds ad-serving support to Sample HlsVideoPlayer */
public class SampleAdsWrapper
        implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {

  // Podserving Stream Constants.
  private static final String STREAM_URL =
          "https://encodersim.sandbox.google.com/masterPlaylist/9c654d63-5373-4673-8c8d-6d92b66b9d46/" +
          "master.m3u8?gen-seg-redirect=true&network=51636543&event=google-sample" +
          "&pids=devrel4628000,devrel896000,devrel3528000,devrel1428000,devrel2628000,devrel1928000" +
          "&seg-host=dai.google.com&stream_id=[[STREAMID]]";
  private static final String NETWORK_CODE = "51636543";
  private static final String CUSTOM_ASSET_KEY = "google-sample";
  private static final String API_KEY = "";

  private static final String PLAYER_TYPE = "DAISamplePlayer";

  /** Log interface, so we can output the log commands to the UI or similar. */
  public interface Logger {

...

광고 모음 게재를 사용 설정하기 위한 라이브 또는 VOD 광고 모음 스트림 요청 만들기

라이브 스트림 광고 모음 게재

다양한 스트림 유형 빌드 간에 전환하는 데 사용되었던 buildStreamRequest() 메서드를 삭제합니다. 그런 다음 requestAndPlayAds()를 변경하여 ImaSdkFactory.createPodStreamRequest()를 호출하여 실시간 포드 게재 광고 요청을 만듭니다. 마지막으로 AdsLoader.requestStream()를 사용하여 스트림을 요청합니다.

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

VOD 스트림 광고 모음 게재

다양한 스트림 유형 빌드 간에 전환하는 데 사용되었던 buildStreamRequest() 메서드를 삭제합니다. 그런 다음 requestAndPlayAds()를 변경하여 ImaSdkFactory.createPodVodStreamRequest()를 호출하여 VOD 포드 게재 광고 요청을 만듭니다. 마지막으로 AdsLoader.requestStream()를 사용하여 스트림을 요청합니다.

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodVodStreamRequest(NETWORK_CODE);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

스트림 URL 수정 및 설정

라이브 스트림 광고 모음 게재

StreamManager.getStreamId()를 호출하여 스트림 ID를 가져옵니다. 그런 다음 "[[STREAMID]]"를 대체하여 STEAM_URL에 삽입해야 합니다. 이 변경사항이 적용되면 videoPlayer.setStreamUrl()를 사용하여 새 스트림 URL을 설정할 수 있습니다.

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  String streamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);

  streamManager.init();

  videoPlayer.setStreamUrl(streamUrl);
  videoPlayer.play();
}

VOD 스트림 광고 모음 게재

StreamManager.getStreamId()를 호출하여 스트림 ID를 가져옵니다. 그런 다음 동영상 기술 파트너 (VTP)에게 스트림 URL을 요청합니다. 그런 다음 StreamManager.loadThirdPartyStream()를 호출하여 IMA가 TVP에서 반환한 스트림 URL과 자막을 로드하도록 합니다.

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  // 'vtpInterface' is a place holder for your own video technology partner
  // (VTP) API calls.
  String streamUrl = vtpInterface.requestStreamURL(streamID);

  streamManager.init();

  // Pass any subtitles returned by your VTP in this step as well.
  streamManager.loadThirdPartyStream(streamUrl, subtitles);
}

포드 제공이 사용 설정된 경우 IMA는 VideoStreamPlayer.loadUrl()를 호출하지 않으므로 videoPlayer.setStreamUrl()videoPlayer.play() 호출을 삭제할 수 있습니다.

IMA DAI 애셋 정리

IMA DAI SDK를 사용하여 광고 모음 게재 스트림에서 광고 요청 및 표시를 완료한 후에는 광고 모음 게재 세션이 완료된 후에 리소스를 정리하는 것이 좋습니다. StreamManager.destroy()를 호출하여 스트림 재생을 중지하고, 모든 광고 추적을 중지하고, 로드된 모든 스트림 애셋을 해제합니다.

Android SDK가 사용되는 다른 예를 보려면 GitHub의 샘플을 참고하세요.