리치 팝업 광고

아래 가이드에서는 리치 팝업 광고를 로드하고, 표시하는 방법을 설명합니다.

기본 요건

시작 가이드에 따라 필요한 과정을 완료합니다.


게재위치 코드

Placement Code(게재위치 코드)는 어드민의 인벤토리 > 게재위치 메뉴에서 게재위치를 등록 시 시스템을 통해 자동으로 생성됩니다.

circle-info

어드민의 인벤토리 > 광고상품 > 광고상품 등록 메뉴에서 리치 팝업 광고의 소재 스펙 및 기본 레이아웃을 설정할 수 있습니다.


광고 표시하기

  1. 리치 팝업 광고가 표시되기 원하는 화면에서 NestAdsRichPopupAdView를 설정하고 로드합니다.

import UIKit
import NestAdsSDK

class ViewController: UIViewController {
    private var richPopupAdView: NestAdsRichPopupAdView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // RichPopupAdView 생성
        richPopupAdView = NestAdsRichPopupAdView(frame: .zero)

        // 게재위치 설정
        richPopupAdView.placementCode = "YOUR_PLACEMENT_CODE"

        // 델리게이트 설정
        richPopupAdView.delegate = self

        // (선택) CTA 버튼 옵션 설정
        let buttonOptions = NestAdsButtonOptions(
            backgroundColor: .black,
            outlineColor: nil,
            opacity: 0.8,
            fontColor: .white,
            fontSize: 14,
            fontName: nil,
            cornerRadius: 8
        )

        // (선택) 비디오 옵션 설정
        let videoOptions = NestAdsStandardVideoOptions(
            startMuted: true,
            playCondition: .autoStart,
            quality: NestAdsVideoQualityAuto,
            backgroundColor: nil,
            progressBarColor: .white,
            muteButtonColor: .white,
            controllerButtonColor: .white
        )

        // (선택) 리치 팝업의 스타일 관련 옵션 설정
        richPopupAdView.options = NestAdsRichPopupOptions(
            backgroundColor: .black,
            closeButtonColor: .white,
            mediaSizeType: .fluid,
            buttonOptions: buttonOptions,
            videoOptions: videoOptions
        )

        // (선택) 비디오 생명주기 콜백 설정
        richPopupAdView.setVideoCallback(self)

        // 광고를 요청합니다.
        richPopupAdView.load(NestAdsAdRequest())
    }
}

// MARK: - NestAdsRichPopupAdViewDelegate
extension ViewController: NestAdsRichPopupAdViewDelegate {
    func richPopupAdViewDidReceiveAd(_ adView: NestAdsRichPopupAdView) {
        // 광고 로드가 완료되면 팝업을 표시합니다.
        adView.show(from: self)
    }

    func richPopupAdView(
        _ adView: NestAdsRichPopupAdView,
        didFailToReceiveAdWithError error: NestAdsAdError
    ) {
        // 광고 로드가 실패하면 할 행동
        print("광고 로드 실패: \(error.message)")
    }

    func richPopupAdViewDidShowAd(_ adView: NestAdsRichPopupAdView) {
        // 광고가 전체 화면 콘텐츠를 표시할 때 호출
    }

    func richPopupAdViewDidRecordClick(
        _ adView: NestAdsRichPopupAdView,
        adInfo: NestAdsAdInfo
    ) {
        // 광고 클릭 시 호출
    }

    func richPopupAdViewDidRecordImpression(
        _ adView: NestAdsRichPopupAdView,
        adInfo: NestAdsAdInfo
    ) {
        // 광고 노출 시 호출
    }

    func richPopupAdViewDidClickCtaButton(_ adView: NestAdsRichPopupAdView) {
        // CTA 버튼 클릭 시 호출
    }

    func richPopupAdViewCountdownDidFinish(_ adView: NestAdsRichPopupAdView) {
        // 카운트다운 완료 시 호출 (카운트다운 광고에서만 호출됨)
    }
}

// MARK: - NestAdsVideoLifecycleCallbacks (비디오 생명주기 콜백)
extension ViewController: NestAdsVideoLifecycleCallbacks {
    func onVideoStart() {
        // 비디오 재생 시작 시 호출
    }

    func onVideoPlay() {
        // 비디오 재생 시 호출
    }

    func onVideoPause() {
        // 비디오 일시정지 시 호출
    }

    func onVideoEnd() {
        // 비디오 종료 시 호출
    }

    func onVideoMute(muted: Bool) {
        // 음소거 상태 변경 시 호출
    }

    func onVideoSeekProcessed(current: TimeInterval) {
        // 재생 위치 변경 시 호출
    }
}
circle-info

NestAdsVideoLifecycleCallbacks vs Delegate

비디오 이벤트는 두 가지 방식으로 수신할 수 있습니다:

  • setVideoCallback(_:): NestAdsVideoLifecycleCallbacks 프로토콜 구현

  • delegate: NestAdsRichPopupAdViewDelegate의 비디오 관련 메서드

두 방식 모두 동시에 사용할 수 있으며, 설정된 경우 모두 호출됩니다. delegate만 사용해도 동일한 비디오 이벤트를 수신할 수 있습니다.


카운트다운 기능

리치 팝업은 어드민에서 설정한 경우 카운트다운 기능을 지원합니다.

  • 카운트다운 활성화: 어드민에서 광고상품 설정 시 카운트다운 옵션을 활성화

  • 카운트다운 완료 시: richPopupAdViewCountdownDidFinish(_:) 델리게이트 메서드가 호출됩니다.

  • 닫기 버튼: 카운트다운이 완료되기 전까지 닫기 버튼이 비활성화될 수 있습니다.

circle-info

카운트다운 설정은 어드민의 광고상품 설정에서 관리됩니다. SDK에서는 별도의 카운트다운 설정이 필요하지 않습니다.


팝업 닫기

리치 팝업을 코드에서 직접 닫아야 하는 경우 dismiss() 메서드를 사용합니다.

circle-exclamation

Public API

NestAdsRichPopupAdView

리치 팝업 광고를 표시하는 뷰입니다.

속성

속성
타입
설명

placementCode

String?

게재위치 코드

delegate

NestAdsRichPopupAdViewDelegate?

광고 이벤트 델리게이트

options

NestAdsRichPopupOptions

리치 팝업 옵션

adInfo

NestAdsAdInfo?

광고 정보 (읽기 전용)

videoController

NestAdsVideoController?

비디오 컨트롤러 (읽기 전용)

메서드

메서드
설명

load(_ request: NestAdsAdRequest?)

광고를 요청하고 로드합니다.

show(from viewController: UIViewController)

리치 팝업 광고를 화면에 표시합니다.

dismiss()

리치 팝업을 닫고 리소스를 해제합니다.

setVideoCallback(_ callback: NestAdsVideoLifecycleCallbacks?)

비디오 생명주기 콜백을 설정합니다.

hasVideoContent() -> Bool

비디오 콘텐츠 포함 여부를 확인합니다.


NestAdsRichPopupOptions

리치 팝업 광고의 스타일 및 동작을 커스터마이징하는 옵션입니다.

속성

속성
타입
기본값
설명

backgroundColor

UIColor

.black

리치 팝업의 배경색

closeButtonColor

UIColor

.white

닫기 버튼의 색상

mediaSizeType

MediaSizeType

.fluid

미디어 크기 타입

buttonOptions

NestAdsButtonOptions

NestAdsButtonOptions()

CTA 버튼의 스타일 옵션

videoOptions

NestAdsStandardVideoOptions

NestAdsStandardVideoOptions()

비디오 플레이어의 옵션

예시


NestAdsRichPopupAdViewDelegate

리치 팝업 광고의 이벤트를 처리하는 델리게이트입니다. 광고 이벤트와 비디오 이벤트를 수신할 수 있습니다.

모든 메서드는 기본 구현이 제공되므로, 필요한 메서드만 구현하면 됩니다.

자세한 내용은 NestAdsRichPopupAdViewDelegate 레퍼런스를 참조하세요.


MediaSizeType

미디어 크기 타입을 나타내는 열거형입니다.

타입
설명

.fluid

너비는 부모와 일치, 높이는 콘텐츠에 맞춤 (scaleAspectFit)

.fill

너비와 높이 모두 부모와 일치 (scaleAspectFill)

.fixed(width:height:)

사용자 정의 너비와 높이


Reference

Last updated