본문으로 건너뛰기

시작하기

GFP SDK 에서는 인스트림 동영상 광고를 표시할 수 있게 도와줍니다.

샘플 이미지

선행 챕터

NAMSDK Import

SDK 모듈을 import 합니다.

import GFPSDK

비디오 광고 제공자 세팅

  • GFPVideoProviderOptionNDA : 네이버 디스플레이 비디오 광고
// IMA와 NDA 비디오 광고를 연동하려는 경우 cocoapods 의존성 추가.
GFPAdManager.setup(withPublisherCd: "publisherCd") { (error : GFPError?) in
print("Setup Eror: \(String(describing: error?.description))")
}

비디오 광고 매니저 타입

뷰 컨트롤러 작성

뷰 컨트롤러(MyViewController)를 만들고, 헤더파일(MyViewController.h)에 아래 작업을 수행합니다.

  1. 뷰 컨트롤러에 GFPVideoAdScheduleManager *scheduleManager 프로퍼티를 선언합니다.
  2. 뷰 컨트롤러에 GFPVideoAdScheduleManagerDelegate 프로토콜을 구현합니다.
  3. 비디오를 재생할 컨테이너 뷰 (UIView)를 준비합니다.
// MyViewController.h

import GFPSDK

class MyViewController : UIViewController, GFPVideoAdScheduleManagerDelegate {
var scheduleManager : GFPVideoAdScheduleManager?

@IBOutlet var videoView : UIView! // 스토리보드의 뷰객체와 연결되어 있음을 가정
var contentPlayer : AVPlayer? // 컨텐츠가 재생되는 Player
}

GFPVideoAdScheduleManager 생성 및 광고 요청

MyViewController.m의 viewDidLoad 메소드에서 GFPVideoAdScheduleManager의 인스턴스를 생성하고, 광고를 요청합니다.

  • GFPVideoAdScheduleManager 인스턴스를 생성할 때, 발급받으신 광고 비디오 스케줄 ID, Content Player(AVPlayer), 광고를 게재할 수 있는 UIView, GFPAdScheduleParam 에서 스케줄 정보를 세팅해주세요. Content Player는 광고 재생을 위한 시간 측정에 사용됩니다.
  • GFPVideoAdScheduleManager 사용이 끝나면 destroy 메소드를 호출해야 합니다.
override func viewDidLoad() {
super.viewDidLoad()

let adParam = GFPAdParam()
adParam.yearOfBirth = 1990
adParam.gender = .male
...

let scheduleParam = GFPAdScheduleParam(placementPolicy: .full, duration: CMTimeGetSeconds(self.duration!), param: adParam)
scheduleParam.noticeDurationSec = 5.0

self.scheduleManager = GFPVideoAdScheduleManager(adScheduleID: "YOUR_SCHEDULE_ID", contentPlayer: contentPlayer, videoView: videoView, scheduleParam: scheduleParam)

self.scheduleManager?.renderingSetting = GFPVideoAdRenderingSetting()

// 광고 스케줄 요청
self.scheduleManager?.delegate = self
self.scheduleManager?.qoeDelegate = self

self.scheduleManager?.loadSchedule()
}

GFPVideoAdScheduleManagerDelegate 구현

GFPVideoAdScheduleManagerDelegate를 구현하시면, 해당 메서드를 통해 이벤트를 받으실 수 있습니다.

스케줄 로드 성공 및 실패

스케줄 로드 성공 시

스케줄 로드에 성공하면 광고 스케줄링이 시작됩니다.

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didLoadedSchedule aAdBreak: [GFPVideoAdBreak]?) {
...
}

스케줄 로드 실패 시

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didFailScheduleWithError aError: GFPError) {
...
}

스케줄 수행이 모두 완료된 경우

func scheduleManagerDidCompleted(_ aScheduleAdManager: GFPVideoAdScheduleManager) {
...
}

컨텐츠 재생 정지 관련 이벤트들

컨텐츠를 재생할 시점이 되었을 때 호출

func scheduleManagerContentResumeRequest(_ aScheduleAdManager: GFPVideoAdScheduleManager) {
/* 전광고가 없을 경우나 광고 재생 실패 시 컨텐츠 player 재생 */
...
}

컨텐츠 정지할 시점이 되었을 때 호출

func scheduleManagerContentPauseRequest(_ aScheduleAdManager: GFPVideoAdScheduleManager) {
/* 광고 재생 전 컨텐츠 player 정지 */
...
}

광고 재생 이후 발생하는 이벤트들

자세한 내용은 GFPVideoAdScheduleManagerDelegate.h 파일을 참고해 주세요.

로드 혹은 재생 실패시

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didFailWith aResult: GFPVideoAdBreakResult) {
...
}

비디오 광고 로드가 되었을 때

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didLoadAd aResult: GFPVideoAdBreakResult) {
...
}

비디오 광고 재생이 시작될 때

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didStartAd aResult: GFPVideoAdBreakResult) {
...
}

비디오 광고 재생 가능 시 호출

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didStartReadyAd aResult: GFPVideoAdBreakResult) {
/* 광고 재생 문구 숨김 처리 후, 재생 중인 플레이어가 있다면 중지하고, 광고 영상을 재생 */
...
self.scheduleAdManager?.start(with: true)
}

비디오 광고 재생이 종료 되었을 때

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didCompleteAd aResult: GFPVideoAdBreakResult) {
...
}

비디오 중간 광고 전 광고 재생 문구 노출 가능 시 호출

GFPAdScheduleParam의 noticeDurationSec 세팅 시 호출

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, showAdNotice aDuration: Int) {
/* "광고 후 재생됩니다" 등 의 문구 노출 */
...
}

클릭 이벤트 발생시

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, wasClicked aResult: GFPVideoAdBreakResult) {
...
}

광고 재생플레이어가 AVPlayer인 경우 로그 이벤트 발생 시

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didReceive accessLogEvents: [AVPlayerItemAccessLogEvent]) {
...
}

Remind(NonLinear) 광고 관련 이벤트들

자세한 내용은 GFPNonLinearDelegate.h 파일을 참고해 주세요.

Remind 광고가 사라지면 호출

호출 상황 : Duration 시간이 지난 이후, 가로 세로 화면 전환시, Close 버튼 클릭 시.

func nonLinearDidHide(_ type: GFPRemindType) {
...
}

Remind 광고 클릭시 호출

func nonLinearWasClicked(_ type: GFPRemindType) {
...
}

Remind 광고가 사용자에게 보여질 경우 호출

func nonLinear(onActiveImpression type: GFPRemindType) {
...
}

기타

QOE(Quality of Experience) 정보

비디오 광고 재생과 관련한 더 상세한 이벤트를 얻기 위해 GFPVideoAdManager.qoeDelegateGFPVideoAdScheduleManager.qoeDelegate를 통해 이벤트 정보를 받을 있습니다.
자세한 내용은 GFPVideoAdQoeDelegate.hGFPVideoAdQoeInfo.h 파일을 참고해 주세요.