실시간 스트림용 동적 광고 삽입 API

Google DAI API를 사용하면 IMA SDK 구현이 지원되지 않는 환경에서 Google DAI 지원 스트림을 구현할 수 있습니다. IMA SDK가 지원되는 플랫폼에서는 IMA를 계속 사용하는 것이 좋습니다.

다음 플랫폼에서 DAI API를 사용하는 것이 좋습니다.

  • Samsung 스마트 TV (Tizen)
  • LG TV
  • HbbTV
  • Xbox (자바스크립트 앱)
  • KaiOS

API는 IMA DAI SDK에서 제공하는 기본 기능을 지원합니다. 호환성 또는 지원되는 기능에 대한 구체적인 질문은 Google 계정 관리자에게 문의하세요.

실시간 스트림에 DAI API 구현하기

DAI API는 HLS 프로토콜과 DASH 프로토콜을 모두 사용하여 선형 (실시간) 스트림을 지원합니다. 이 가이드에 설명된 단계는 두 프로토콜에 모두 적용됩니다.

실시간 스트림을 위해 API를 앱에 통합하려면 다음 단계를 완료하세요.

1. 스트림 요청

DAI API에서 실시간 스트림을 요청하려면 스트림 엔드포인트에 POST 호출을 실행하세요. JSON 응답에는 스트림 매니페스트와 연결된 DAI API 엔드포인트 및 값이 포함됩니다.

요청 본문 예시

https://dai.google.com/linear/v1/dash/event/0ndl1dJcRmKDUPxTRjvdog/stream

{
  key1 : "value1",
  stream_parameter1 : "value2"
}

응답 본문 예시

{
"stream_id":"c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL",
"stream_manifest":"https://dai.google.com/linear/dash/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/manifest.mpd",
"media_verification_url":"https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/",
"metadata_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/metadata",
"session_update_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/session",
"polling_frequency":10
}

오류 응답

오류가 발생하면 JSON 응답 본문 없이 표준 HTTP 오류 코드가 반환됩니다.

JSON 응답을 파싱하고 다음 값을 저장합니다.

stream_id
이 값은 반환된 스트림을 식별하는 데 사용할 수 있습니다.
stream_manifest
이 URL은 스트림 재생을 위해 미디어 플레이어로 전달됩니다.
media_verification_url
이 URL은 재생 이벤트 추적을 위한 기본 엔드포인트입니다.
metadata_url
이 URL은 예정된 스트림 이벤트에 관한 주기적인 정보를 폴링하는 데 사용됩니다.
session_update_url
이 URL은 초기 스트림 요청 중에 전송된 스트림 요청 매개변수를 업데이트하는 데 사용됩니다. 이 요청의 매개변수는 이전 스트림에 설정된 모든 매개변수를 대체합니다.
polling_frequency
DAI API에서 업데이트된 AdBreak 메타데이터를 요청하는 빈도(초)입니다.

2. 새 광고 시점 메타데이터 설문조사

메타데이터 URL을 사용하여 폴링 빈도로 새 광고 시간 메타데이터를 폴링하도록 타이머를 설정합니다. 스트림 응답에 지정되지 않은 경우 기본 권장 간격은 10초입니다.

요청 본문 예시

https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/metadata

응답 본문 예시

{
   "tags":{
      "google_0492266569":{
         "ad":"0000229836_ad1",
         "ad_break_id":"0000229836",
         "type":"firstquartile"
      },
      "google_1560331148":{
         "ad":"0000229836_ad1",
         "ad_break_id":"0000229836",
         "type":"thirdquartile"
      },
      "google_1877686714378797835":{
         "ad":"0000229836_slate",
         "ad_break_id":"0000229836",
         "type":"progress"
      },
      "google_1vRyQBYPw_7Gg3MrZ6S5EjmV9aLje-YpW8QHed1DSlU":{
         "ad":"0000229835_ad1",
         "ad_break_id":"0000229835",
         "type":"progress"
      },
      "google_2032765498":{
         "ad":"0000229835_ad1",
         "ad_break_id":"0000229835",
         "type":"midpoint"
      },......
      "google_5646900623":{
         "ad":"0000229837_ad1",
         "ad_break_id":"0000229837",
         "type":"complete"
      }
   },
   "ads":{
      "0000229834_ad1":{
         "ad_break_id":"0000229834",
         "position":1,
         "duration":15.01,
         "title":"truman-e2e-creativeset4",
         "description":"truman-e2e-creativeset4 ad",
         "ad_system":"GDFP",
         "ad_id":"39066884",
         "creative_id":"58092079124",
         "clickthrough_url":"https://pubads.g.doubleclick.net/pcs/click?xai=AKAO...\u0026adurl=http://google.com",
         "universal_ad_id":{
            "id_value":"58092079124",
            "id_registry":"GDFP"
         }
      },
      "0000229834_slate":{
         "ad_break_id":"0000229834",
         "position":-1,
         "duration":14.974977777,
         "slate":true
      },...
   },
   "ad_breaks":{
      "0000229834":{
         "type":"mid",
         "duration":15.01,
         "expected_duration":29.984977776999997,
         "ads":1
      },....
   }
}

3. ID3 이벤트 수신 대기 및 재생 이벤트 추적

동영상 스트림에서 특정 이벤트가 발생했는지 확인하려면 다음 단계에 따라 ID3 이벤트를 처리합니다.

  1. 미디어 이벤트를 대기열에 저장하여 각 미디어 ID를 타임스탬프와 함께 저장합니다 (플레이어에 표시되는 경우).
  2. 플레이어에서 업데이트할 때마다 또는 설정된 빈도 (500밀리초 권장)로 이벤트 타임스탬프를 플레이헤드와 비교하여 미디어 이벤트 대기열에서 최근 재생된 이벤트를 확인합니다.
  3. 재생되었음을 확인한 미디어 이벤트의 경우 저장된 광고 시점 태그에서 미디어 ID를 조회하여 유형을 확인합니다. 저장된 태그에는 미디어 ID의 접두사만 포함되어 있으므로 일치검색이 불가능하다는 점에 유의하세요.
  4. '진행률' 이벤트를 사용하면 사용자가 광고 시간에 참여하고 있는지 추적할 수 있습니다. 이러한 이벤트를 미디어 확인 엔드포인트로 전송하면 안 됩니다. 다른 이벤트 유형의 경우 미디어 확인 엔드포인트에 미디어 ID를 추가하고 GET 요청을 실행하여 재생을 추적합니다.
  5. 대기열에서 미디어 이벤트를 삭제합니다.

요청 본문 예시

https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/

응답 예시

Accepted for asynchronous verification - HTTP/1.1 202 Accepted
Successful empty response - HTTP/1.1 204 No Content
Media verification not found - HTTP/1.1 404 Not Found
Media verification sent by someone else - HTTP/1.1 409 Conflict

스트림 활동 모니터링에서 추적 이벤트를 확인할 수 있습니다.

4. 실시간 스트림 세션 매개변수 업데이트

스트림이 생성된 후에 세션 매개변수를 조정해야 할 수 있습니다. 이렇게 하려면 세션 업데이트 URL에 요청을 전송합니다.

요청 본문 예시

https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/session

{
  key1 : "value1",
  stream_parameter1 : "value2"
}

응답 본문 예시

Successful response would be to look for - HTTP/1.1 200

제한사항

WebView 내에서 API를 사용하는 경우 타겟팅과 관련하여 다음 제한사항이 적용됩니다.

  • UserAgent: 사용자 에이전트 매개변수가 기본 플랫폼 대신 브라우저별 값으로 전달됩니다.
  • rdid, idtype, is_lat: 기기 ID가 제대로 전달되지 않아 다음 기능의 기능이 제한됩니다.
    • 최대 게재빈도 설정
    • 순차 광고 로테이션
    • 잠재고객 분류 및 타겟팅

권장사항

실시간 스트림 색인의 메타데이터 엔드포인트는 해당 ID3 태그의 접두사를 기반으로 합니다. 이는 모든 확인 노드를 즉시 핑하기 위해 메타데이터 엔드포인트를 사용하지 못하도록 하기 위함입니다.

추가 리소스