HLS 전면 광고 사양은 동영상 또는 오디오 스트림에 광고를 예약하고 삽입하는 유연한 방법을 도입합니다. 클라이언트 측 접근 방식을 사용하면 애플리케이션에서 AVPlayerInterstitialEvent 클래스를 만들어 광고 시점을 요청하고 재생하는 시점을 완전히 제어할 수 있습니다. 이 접근 방식에서는 콘텐츠 스트림 매니페스트에 EXT-X-DATERANGE 태그가 필요하지 않습니다. 클라이언트 측 HLS 광고를 사용하면 스트림 매니페스트나 미디어 파일을 수정하지 않고도 콘텐츠에 광고를 동적으로 삽입할 수 있습니다.
이 가이드에서는 서버 안내 광고 삽입 (SGAI) 라이브 스트림 세션을 만들고 클라이언트 측에서 전면 광고를 예약하는 동영상 플레이어 앱에 양방향 미디어 광고 (IMA) SDK를 통합하는 방법을 설명합니다. 자세한 내용은 서버 안내 DAI를 참고하세요.
기본 요건
시작하기 전에 다음이 필요합니다.
사용자 인터페이스에
Storyboard를 사용하는 새 Xcode 프로젝트 자세한 내용은 앱용 Xcode 프로젝트 만들기를 참고하세요.Google IMA SDK 자세한 내용은 DAI용 IMA SDK 설정을 참고하세요.
DAI 라이브 스트림 요청의 다음 매개변수:
NETWORK_CODE: Google Ad Manager 네트워크 코드입니다.CUSTOM_ASSET_KEY: DAI 라이브 스트림 이벤트를 식별하는 맞춤 문자열입니다. 라이브 스트림 이벤트의 DAI 유형은 광고 모음 게재 매니페스트여야 합니다.
스토리보드 구성
iPhone.storyboard 파일에서 다음을 실행합니다.
- 동영상 플레이어와 광고 UI의 컨테이너로
UIView객체를 만듭니다. UIView객체와 연결하기 위해ViewController클래스의adUIView속성을 만듭니다.adUIView객체에서 재생 버튼으로 작동하는UIButton을 만듭니다.UIButton객체와 연결하고 사용자 탭을 처리하는onPlayButtonTouch함수를ViewController클래스의playButton속성으로 만듭니다.
광고 로더 초기화
기본 뷰 컨트롤러의 viewDidLoad 이벤트에서 다음을 실행합니다.
AVPlayer및AVPlayerLayer클래스를 사용하여 동영상 플레이어를 설정합니다.IMAAdDisplayContainer및IMAAVPlayerVideoDisplay객체를 만듭니다. 광고 표시 컨테이너는 IMA DAI SDK가 광고 UI 하위 뷰를 삽입할adUIView를 지정합니다. 동영상 디스플레이 객체는 IMA DAI SDK의 광고 로직과 AVFoundation 재생 시스템 간의 브리지 역할을 하며 동영상 광고 재생을 추적합니다.- 광고 재생 및 광고 UI 현지화 설정으로
IMAAdsLoader객체를 초기화합니다.
다음 예에서는 빈 IMASettings 객체로 광고 로더를 초기화합니다.
스트림 요청하기
콘텐츠 스트림의 광고를 요청하려면 IMAPodStreamRequest 객체를 만들고 IMAAdsLoader 인스턴스에 전달합니다. 원하는 경우 adTagParameters 속성을 설정하여 스트림의 DAI 옵션과 타겟팅 매개변수를 제공합니다.
이 예에서는 viewDidAppear 이벤트에서 loadAdStream 메서드를 호출합니다.
프로덕션 앱에서 사용자가 콘텐츠 스트림을 선택한 후 loadAdStream 메서드를 호출합니다.
스트림 로드 이벤트 처리
IMAAdsLoaderDelegate 프로토콜을 구현하여 스트림 요청의 성공 또는 실패를 처리합니다.
- 성공하면
IMAStreamManager이 포함된IMAAdsLoadedData객체가 수신됩니다. 현재 DAI 세션의streamManager.streamId값을 저장합니다. - 실패 시 오류를 로깅합니다.
다음 예에서는 스트림 로드 이벤트를 처리하고 스트림 로드 실패 이벤트를 로깅합니다.
광고 삽입 예약
광고 시점을 예약하려면 AVPlayerInterstitialEvent 객체를 만듭니다. 이벤트 객체의 templateItems 속성을 AVPlayerItem 객체의 배열로 설정합니다. 각 항목 객체는 광고 애드팟 매니페스트 URL을 보유합니다.
광고 모음 매니페스트 URL을 구성하려면 방법: HLS 광고 모음 매니페스트 문서를 따르세요.
데모를 위해 다음 예에서는 콘텐츠 라이브 스트림의 현재 시간을 사용하여 포드 식별자 문자열을 생성합니다. generatePodIdentifier 함수는 포드 식별자를 ad_break_id/mid-roll-{minute}로 반환합니다.
프로덕션 앱에서 라이브 스트림의 모든 시청자에 대해 동기화된 각 광고 시점에 고유한 값을 제공하는 소스에서 포드 식별자를 가져옵니다.
다음 예에서는 사용자가 재생 버튼을 클릭한 후 2분 이내에 시작되도록 광고 시간을 예약합니다.
scheduleAdInsertion 메서드는 광고 시점 시작 시간을 계산하고 광고 모음 매니페스트 URL을 구성합니다. 이 URL을 사용하여 AVPlayerInterstitialEvent 객체를 만듭니다.
원하는 경우 AVPlayerInterstitialEvent.Restrictions 구조체를 사용하여 광고 재생 중에 사용자가 건너뛰거나 되감을 수 없도록 제한합니다.
광고 이벤트 처리
광고 이벤트를 처리하려면 IMAStreamManagerDelegate 프로토콜을 구현하세요. 이 방법을 사용하면 광고 시점이 시작되고 종료되는 시점을 추적하고 개별 광고에 관한 정보를 얻을 수 있습니다.
앱을 실행합니다. 성공하면 Pod 제공 매니페스트 스트림을 사용하여 전면 광고를 요청하고 재생할 수 있습니다.