본문으로 건너뛰기

네이티브 동영상 광고

정보

NAMSDK 6.2.0 버전 부터 Outstream 광고를 지원합니다.

정보

NAMSDK 7.3.0 버전 부터 Outstream 광고의 UI를 선택할 수 있습니다.

네이티브 연동 가이드​

아웃스트림은 네이티브 노말 타입의 광고 입니다. 네이티브 노말 연동과 관련된 가이드는 링크를 참고해주세요.

아웃스트림 Player UI​

아웃스트림은 MediaView 내의 동영상이 노출되는 광고 상품입니다.

아웃스트림의 control UI를 설정하려면 GFPVideoOptions 의 viewType 가이드를 확인해주세요. 매체 별로 custom 한 control UI 를 구성하고자 한다면, useCustomControlView 가이드를 확인해주세요.

아웃스트림 관련 API​

enableMediaBackgroundBlur​

네이티브 광고 미디어뷰 여백의 블러처리 여부를 설정합니다. (기본값: NO) 해당 블러처리는 섬네일 이미지가 존재할 때 적용되며, 섬네일 이미지가 존재하지 않을 경우 검은색 배경으로 노출됩니다.

let nativeOptions = GFPAdNativeOptions()

let renderingSetting = GFPNativeAdRenderingSetting()
renderingSetting.enableMediaBackgroundBlur = false
renderingSetting.enableMediaBackgroundBlur = true

nativeOptions.renderingSetting = renderingSetting

GFPVideoOptions​

GFPVideoOptions 를 통해 아웃스트림의 재생 정책 및 custonControlView 사용 여부, 영상의 최대 화질을 설정할 수 있습니다.

GFPVideoOptions는 adLoader의 nativeOption에 설정하여 전달합니다.

let nativeOptions = GFPAdNativeOptions()

let videoOption = GFPVideoOptions(playPolicy: .autoPlay, useCustomControlView: false)

nativeOptions.videoOptions = videoOption

GFPVideoPlayPolicy​

광고 영상의 재생 정책을 설정합니다. (기본값: Auto)

  • Auto: 영상 재생은 sdk가 직접 제어합니다. 네트워크가 WiFi, Cellular 일 때 영상 끝까지 재생됩니다.
  • Auto Only WiFi: 영상 재생은 sdk가 직접 제어합니다. 네트워크가 WiFi 일 때 영상 끝까지 재생됩니다. Cellular의 경우 n초 재생 후 정지합니다.
  • Manual: 영상 재생은 서비스에서 제어합니다. 광고 노출 시 영상이 일시정지 상태에서 노출되며, 재생 시점은 서비스에서 결정합니다.
let videoOption = GFPVideoOptions(playPolicy: .autoPlay, useCustomControlView: false)

let videoOption = GFPVideoOptions(playPolicy: .autoPlayOnlyWiFi, useCustomControlView: false)

let videoOption = GFPVideoOptions(playPolicy: .manual, useCustomControlView: false)

useCustomControlView​

광고 영상의 customControlView 사용 여부를 설정합니다. (기본값: NO) YES로 설정 시 player의 control 구성 요소를 숨기며, NO로 설정 시 sdk 내에서 control 구성 요소를 그려줍니다.

let videoOption = GFPVideoOptions(playPolicy: .autoPlay, useCustomControlView: false)

let videoOption = GFPVideoOptions(playPolicy: .autoPlay, useCustomControlView: true)

shouldHideThumbnailAfterAd (since 8.22.1)​

광고 영상 종료 후 썸네일 노출 여부를 설정합니다. (기본값: NO) YES로 설정 시 광고 종료(complete) 후 썸네일을 숨깁니다. 광고 요청 전에 설정해 주세요.

let videoOption = GFPVideoOptions(playPolicy: .autoPlay, useCustomControlView: true)
videoOption.shouldHideThumbnailAfterAd = true

maxBitrateKbps​

광고 영상의 최대 bitrate를 설정 할 수 있습니다. (기본값: 800, 단위: kbps)

videoOption.maxBitrateKbps = 800

viewType (since 7.3.0)​

viewTypedescription
Default영상 화면 클릭 시 컨트롤 버튼이 노출됩니다.샘플 이미지
Landing영상 화면 클릭 시 광고주 사이트로 랜딩 됩니다.샘플 이미지
let videoOptions = GFPVideoOptions(playPolicy: .autoPlay, viewType: .default)

let videoOptions = GFPVideoOptions(playPolicy: .autoPlay, viewType: .landing)

GFPMediaData​

네이티브 노말 타입은 adLoader의 adLoader:didReceiveNativeAd: 을 통해 전달됩니다. GFPAdLoaderDelegate에 관한 자세한 내용은 링크를 참고해주세요.

nativeAd의 mediaData를 통해 미디어뷰에 그려진 정보를 획득할 수 있습니다.

정보

네이티브 광고 Lazy Loading 을 사용하는 경우 최초 광고 로드 콜백 시점의 nativeAd.mediaData 는 미디어 영역 높이를 잡기 위한 레이아웃 정보로 사용할 수 있습니다. 이때 preferredMediaWidth, preferredMediaHeight, preferredHeightWithFixedWidth(_:) 세 값을 사용할 수 있습니다. 단, preferredMediaWidth 와 preferredMediaHeight 가 0보다 큰 경우에만 유효한 크기 값으로 사용해 주세요.

단, 아웃스트림 동영상 리소스는 광고 뷰가 실제 화면 계층에 attach 된 뒤 로딩됩니다. 따라서 mediaData.videoController 는 최초 광고 로드 콜백 시점이 아니라 메인 미디어가 성공적으로 로딩된 이후에 참조해 주세요. Lazy Loading 사용 시 SDK 내부의 유효 노출(sc/12) 서버 보고는 메인 미디어 로딩 성공 이후 진행됩니다.

let mediaData = nativeAd.mediaData

mediaType​

mediaType을 통해 광고 타입을 구분할 수 있습니다.

  • GFPMediaTypeImage: 이미지 타입
  • GFPMediaTypeVideo: 영상 타입
  • GFPMediaTypeRichMedia: 검하단 스페셜DA 등 richMedia 타입
  • GFPMediaTypeUnknown: 구글, 메타, 인모비 등 c2s를 통해 서빙된 광고
let mediaType = nativeAd.mediaData.mediaType

aspectRatio​

미디어의 aspectRatio를 제공합니다. 해당 데이터가 존재하지 않을 경우 -1을 반환합니다.

let aspectRatio = nativeAd.mediaData.aspectRatio

videoController​

mediaType이 Video인 경우에만 반환합니다. 해당 데이터가 존재하지 않을 경우 nil을 반환합니다.

let videoController = nativeAd.mediaData.videoController

GFPVideoController​

videoController를 통해 progressInfo, isMuted 등의 정보를 알 수 있으며, 영상의 mute/play/pause/stop 을 제어할 수 있습니다.

progressInfo​

광고 영상의 duration, currentTime, bufferedTime 정보를 제공합니다.

let videoController = nativeAd.mediaData.videoController

let progressInfo = videoController.progressInfo

let duration = progressInfo.duration
let currentTime = progressInfo.currentTime
let bufferedTime = progressInfo.bufferedTime

isPlaying​

광고 영상의 재생 여부를 알려줍니다.

let videoController = nativeAd.mediaData.videoController

let isPlaying = videoController.isPlaying

avPlayer (since 8.24.0)​

광고 영상 재생에 사용되는 AVPlayer 객체입니다. AVPlayer 기반이 아닌 광고에서는 nil이 반환됩니다.

주의

관찰용(time observer 등록 등)으로만 사용해주세요. 광고 로깅을 위해 재생 제어(play/pause/mute)는 반드시 GFPVideoController의 API를 사용해야 하며, AVPlayer를 직접 제어할 경우 광고 이벤트 집계가 정상 동작하지 않을 수 있습니다.

let videoController = nativeAd.mediaData.videoController

if let avPlayer = videoController.avPlayer {
// 재생 상태 관찰 용도로만 사용
}

enableControl​

광고 영상 제어가 가능한 지 알려줍니다. enableControl은 GFPVideoPlayPolicy 와 관련 있습니다.

  • videoOptions의 playPolicy가 Manual 일 때 eanbleControl 은 YES 로 리턴.
  • videoOptions의 playPolicy가 Manual 아닐 때 eanbleControl 은 NO 로 리턴.
let videoController = nativeAd.mediaData.videoController

let enableControl = videoController.enableControl

preferredForwardBufferDuration​

광고 영상의 preferredForwardBufferDuration 설정합니다.

let videoController = nativeAd.mediaData.videoController
videoController.preferredForwardBufferDuration = 0

mute​

광고 영상의 mute 여부를 설정하며, isMuted 를 통해 조회 할 수 있습니다.

let videoController = nativeAd.mediaData.videoController

videoController.mute = true
videoController.mute = false

let isMute = videoController.isMuted

play​

광고 영상을 재생하며, enableControl 가 YES 일 때 동작합니다.

let videoController = nativeAd.mediaData.videoController
videoController.play()

pause​

광고 영상을 정지시키며, enableControl 가 YES 일 때 동작합니다.

let videoController = nativeAd.mediaData.videoController
videoController.pause()

stop​

광고 영상을 정지 시키며, 영상을 처음 상태로 되돌립니다. enableControl 가 YES 일 때 동작합니다.

let videoController = nativeAd.mediaData.videoController
videoController.stop()

seek: (since 8.21.0)​

광고 영상을 특정 재생 위치로 이동합니다. progress는 0.0(시작)부터 1.0(끝) 사이의 값으로 전달합니다. enableControl 가 YES 일 때 동작합니다.

let videoController = nativeAd.mediaData.videoController
videoController.seek(0.5) // 영상의 50% 지점으로 이동

GFPVideoEventDelegate​

videoController 의 delegate를 통해 설정할 수 있으며, 광고 영상에 대한 이벤트를 받을 수 있습니다.

let videoController = nativeAd.mediaData.videoController
videoController.delegate = self

adPlayerDidPlay:​

광고 영상 재생 시 호출됩니다.

func adPlayerDidPlay(_ videoController: GFPVideoController) {

}

adPlayerDidPause:​

광고 영상 정지 시 호출됩니다.

func adPlayerDidPause(_ videoController: GFPVideoController) {

}

adPlayerDidComplete:​

광고 영상 재생 완료 시 호출됩니다.

func adPlayerDidComplete(_ videoController: GFPVideoController) {

}

adPlayerDidChangeMuteState:​

광고 영상 플레이어에 mute 상태가 변경 될 때 호출됩니다.

func adPlayerDidChangeMuteState(_ videoController: GFPVideoController) {

}

adPlayer:didChangeCurrentTime:​

광고 영상의 현재 진행률 변경 시 호출됩니다.

func adPlayer(_ videoController: GFPVideoController, didChangeCurrentTime currentTime: TimeInterval) {

}

adPlayer:didChangeBufferedTime:​

광고 영상의 버퍼 진행률 변경 시 호출됩니다.

func adPlayer(_ videoController: GFPVideoController, didChangeBufferedTime bufferedTime: TimeInterval) {

}

adPlayer:didTappedControlButton:​

(Optional) 네이티브 광고 영상의 control 버튼 클릭 시 호출 됩니다. sdk에서 제공하는 default controlView 사용시 호출되며, customControlView 사용시 호출되지 않습니다.

func adPlayer(_ videoController: GFPVideoController, didTappedControlButton buttonType: GFPControlButtonType) {

}