본문으로 건너뛰기

시작하기

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

샘플 이미지

선행 챕터​

의존성 추가​

전면형 광고를 사용하기 위해서는 Podfile에 GFPSDK/MediationNDARich 모듈을 추가해야 합니다.

# static library 사용 시
pod 'GFPSDK/MediationNDARich'

# dynamic library 사용 시
pod 'GFPSDK-Dynamic/MediationNDARich'

NAMSDK Import​

SDK 모듈을 import 합니다.

import GFPSDK

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

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

Provider OptionAd ProviderCocoaPods
GFPInterstitialAdProviderOptionNDA네이버 NDApod 'GFPSDK/MediationNDA'
GFPInterstitialAdProviderOptionDFP구글 GAM (Google Ad Manager)pod 'GFPSDKMediationDFP'
GFPInterstitialAdProviderOptionFANMeta Audience Networkpod 'GFPSDKMediationFAN'
GFPInterstitialAdProviderOptionUnityUnity Adspod 'GFPSDKMediationUnity'
GFPInterstitialAdProviderOptionAppLovinAppLovin MAXpod 'GFPSDKMediationAppLovin'
GFPInterstitialAdProviderOptionVungleLiftoff (Vungle)pod 'GFPSDKMediationVungle'
GFPInterstitialAdProviderOptionDTDigital Turbinepod 'GFPSDKMediationDT'
GFPInterstitialAdProviderOptionISIronSourcepod 'GFPSDKMediationIronSource'
GFPInterstitialAdProviderOptionLANLINE Ads Networkpod 'GFPSDKMediationLAN'
GFPInterstitialAdProviderOptionChartBoostChartboostpod 'GFPSDKMediationChartBoost'
GFPInterstitialAdProviderOptionBidMachineBidMachinepod 'GFPSDKMediationBidMachine'
GFPInterstitialAdProviderOptionPanglePanglepod 'GFPSDKMediationPangle'
정보

S2S 전면형 광고는 별도의 제공자 초기화가 필요 없습니다.

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

GFPAdManager 상세 설정 방법은 광고매니저 설정을 참고해 주세요.

뷰 컨트롤러 작성​

뷰 컨트롤러(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 *) 메서드로 광고 노출을 요청할 수 있습니다.

광고 로드 완료 확인​

isAdLoaded 속성을 사용해 광고가 로드된 상태인지 확인할 수 있습니다.

if self.adManager?.isAdLoaded == true {
// 광고가 로드된 상태입니다.
}

광고 무효화 확인​

미리 로드하여 캐싱한 광고를 게재할 경우 반드시 isAdInvalidate 메서드를 사용해 광고가 만료되었는지 확인해야 합니다. 만료된 광고를 게재하면 광고 노출에 대한 보상을 받을 수 없습니다.

if interstitialdAd.isAdInvalidate {
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 버전에서는 클릭 이벤트를 지원하지 않아 이벤트가 오지 않습니다.

아래 메서드들은 @optional로 선언된 delegate 메서드입니다. 필요에 따라 선택적으로 구현할 수 있습니다.

광고 노출(Impression) 발생 시​

func interstitialAdManagerDidReceiveImpression(_ manager: GFPInterstitialAdManager) { ... }

인앱 브라우저 열릴 때​

func interstitialAdManagerDidPresentDefaultInAppBrowser(_ manager: GFPInterstitialAdManager) { ... }

인앱 브라우저 닫힐 때​

func interstitialAdManagerDidDismissDefaultInAppBrowser(_ manager: GFPInterstitialAdManager) { ... }