본문으로 건너뛰기

시작하기

전면형 광고는 전체 화면을 사용하는 여러 타입의 광고입니다.

현재는 C2S만 지원하고 있으며, 추후에 S2S가 추가될 예정입니다.

샘플 이미지

선행 챕터

NAMSDK Import

SDK 모듈을 import 합니다.

import GFPSDK

C2S 전면형 광고 제공자 초기화

연동할 전면형 광고 제공자의 Pod이 프로젝트에 추가된 상태에서 GFPAdManager를 통해 초기화 합니다. (앱이 구동되는 시점에 한번만 수행)

  • GFPInterstitialAdProviderOptionDFP : 구글 DFP 전면형 광고
  • GFPInterstitialAdProviderOptionFAN : 페이스북 FAN 전면형 광고
// DFP, Facebook 전면형 광고를 연동하려는 경우 cocoapods 의존성 추가.
GFPAdManager.setup(withPublisherCd: "publisherCd") { (error : GFPError?) in
print("Setup Eror: \(String(describing: error?.description))")
}

뷰 컨트롤러 작성

뷰 컨트롤러(MyViewController)를 만들고, 헤더파일(MyViewController.h)에 아래 작업을 수행합니다.
(이 예제에서는 뷰 컨트롤러가 매니저를 소유하는 형식으로 구현합니다.)

  1. 뷰 컨트롤러에 GFPInterstitialAdManager *adManager 프로퍼티를 선언합니다.
  2. 뷰 컨트롤러에 GFPInterstitialAdManagerDelegate 프로토콜을 구현합니다.

GFPInterstitialAdManagerDelegate 는 전면형 광고의 로드, 실패 여부 및 클릭 여부를 전달합니다.

// MyViewController.h
import GFPSDK

class MyViewController : UIViewController, GFPInterstitialAdManagerDelegate {
private var adManager : GFPInterstitialAdManager?
}

GFPInterstitialAdManager 사용 가이드

GFPInterstitialAdManager 생성 및 광고 로드 요청

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

  • 인스턴스 생성 후에는 delegate를 반드시 설정해줍니다.
  • GFPInterstitialAdManager 인스턴스를 생성할 때, 발급받으신 광고유닛 ID와 함께, GFPAdParam 에서 사용자 정보를 세팅해주세요. GFPAdParam은 광고 효과를 높이기 위한 타게팅에 사용됩니다.
override func viewDidLoad() {
super.viewDidLoad()

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

//인스턴스 생성
self.adManager = GFPInterstitialAdManager(unitID: "UnitID", adParam: adParam)
//Delegate
self.adManager?.delegate = self
//Timeout
self.adManager?.requestTimeoutInterval = 60
//광고 요청
self.adManager?.load()
}

위 매니저는 광고 로드 & 광고 응답에 대해 일회성으로 사용하도록 설계되었습니다. 새로운 광고를 로드할 때는 새로운 매니저를 다시 만들어주세요.

광고 요청 성공 시 GFPInterstitialAdManagerDelegate interstitialAdManager:didLoadAd: 메소드가 호출됩니다.

광고 노출 요청

GFPInterstitialAdManagerDelegate interstitialAdManager:didLoadAd: 로 성공 응답을 받았다면, show:(UIViewController *) 메서드로 광고 노출을 요청할 수 있습니다.

self.adManager?.show(self)

광고 노출 요청 시, 노출에 실패한다면 GFPInterstitialAdManagerDelegate interstitialAdManager:didFailWithError:responseInfo: 메소드가 호출됩니다.

광고 로드와 광고 노출이 분리되어 있기 때문에, 로드를 먼저 한 후에 노출을 하는 형식으로 구현할 수 있습니다. 이 때의 로드된 광고 유효시간은 DFP, FAN : 60분입니다.

GFPInterstitialAdManagerDelegate

GFPInterstitialAdManagerDelegate를 구현하시면, 해당 메서드를 통해서 전면형 광고의 이벤트를 전달받을 수 있습니다.

로드 이벤트

로드 성공 시

func interstitialAdManager(_ manager: GFPInterstitialAdManager, didLoad interstitialAd: GFPInterstitialAd) {
...
}

로드 실패 시

func interstitialAdManager(_ manager: GFPInterstitialAdManager, didFailWithError error: GFPError, responseInfo: GFPLoadResponseInfo!) {
...
}

로드 실패 뿐만 아니라 화면 노출 실패, 유효기간 만료 등의 실패 사항도 모두 해당 메서드로 전달받을 수 있습니다.

LifeCycle Event

광고 시청 화면 시작 시

func interstitialAdManager(_ manager: GFPInterstitialAdManager, didStart interstitialAd: GFPInterstitialAd) {
...
}

광고 시청 완료

func interstitialAdManager(_ manager: GFPInterstitialAdManager, didComplete interstitialAd: GFPInterstitialAd) {
...
}

광고 화면 사라질 시

func interstitialAdManager(_ manager: GFPInterstitialAdManager, didClose interstitialAd: GFPInterstitialAd) {
...
}

광고 화면 클릭 시

func interstitialAdManager(_ manager: GFPInterstitialAdManager, wasClickedAd interstitialAd: GFPInterstitialAd) {
...
}

7.x.x대의 DFP 버전에서는 클릭 이벤트를 지원하지 않아 이벤트가 오지 않습니다.