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

선행 챕터
의존성 추가
전면형 광고를 사용하기 위해서는 Podfile에 GFPSDK/MediationNDARich 모듈을 추가해야 합니다.
# static library 사용 시
pod 'GFPSDK/MediationNDARich'
# dynamic library 사용 시
pod 'GFPSDK-Dynamic/MediationNDARich'
NAMSDK Import
SDK 모듈을 import 합니다.
- Swift
- Objective-C
import GFPSDK
@import GFPSDK;
전면형 광고 제공자 초기화
연동할 전면형 광고 제공자의 Pod이 프로젝트에 추가된 상태에서 GFPAdManager를 통해 초기화 합니다. (앱이 구동되는 시점에 한번만 수행)
| Provider Option | Ad Provider | CocoaPods |
|---|---|---|
| GFPInterstitialAdProviderOptionNDA | 네이버 NDA | pod 'GFPSDK/MediationNDA' |
| GFPInterstitialAdProviderOptionDFP | 구글 GAM (Google Ad Manager) | pod 'GFPSDKMediationDFP' |
| GFPInterstitialAdProviderOptionFAN | Meta Audience Network | pod 'GFPSDKMediationFAN' |
| GFPInterstitialAdProviderOptionUnity | Unity Ads | pod 'GFPSDKMediationUnity' |
| GFPInterstitialAdProviderOptionAppLovin | AppLovin MAX | pod 'GFPSDKMediationAppLovin' |
| GFPInterstitialAdProviderOptionVungle | Liftoff (Vungle) | pod 'GFPSDKMediationVungle' |
| GFPInterstitialAdProviderOptionDT | Digital Turbine | pod 'GFPSDKMediationDT' |
| GFPInterstitialAdProviderOptionIS | IronSource | pod 'GFPSDKMediationIronSource' |
| GFPInterstitialAdProviderOptionLAN | LINE Ads Network | pod 'GFPSDKMediationLAN' |
| GFPInterstitialAdProviderOptionChartBoost | Chartboost | pod 'GFPSDKMediationChartBoost' |
| GFPInterstitialAdProviderOptionBidMachine | BidMachine | pod 'GFPSDKMediationBidMachine' |
| GFPInterstitialAdProviderOptionPangle | Pangle | pod 'GFPSDKMediationPangle' |
S2S 전면형 광고는 별도의 제공자 초기화가 필요 없습니다.
- Swift
- Objective-C
// DFP, Facebook 전면형 광고를 연동하려는 경우 cocoapods 의존성 추가.
GFPAdManager.setup(withPublisherCd: "publisherCd") { (error : GFPError?) in
print("Setup Eror: \(String(describing: error?.description))")
}
// DFP, Facebook 전면형 광고를 연동하려는 경우 cocoapods 의존성 추가.
[GFPAdManager setupWithPublisherCd:@"publisherCd" completionHandler:^(GFPError * _Nullable error) {
NSLog(@"Setup ERROR: %@", error);
}];
GFPAdManager 상세 설정 방법은 광고매니저 설정을 참고해 주세요.
뷰 컨트롤러 작성
뷰 컨트롤러(MyViewController)를 만들고, 헤더파일(MyViewController.h)에 아래 작업을 수행합니다.
(이 예제에서는 뷰 컨트롤러가 매니저를 소유하는 형식으로 구현합니다.)
- 뷰 컨트롤러에 GFPInterstitialAdManager *adManager 프로퍼티를 선언합니다.
- 뷰 컨트롤러에 GFPInterstitialAdManagerDelegate 프로토콜을 구현합니다.
GFPInterstitialAdManagerDelegate 는 전면형 광고의 로드, 실패 여부 및 클릭 여부를 전달합니다.
- Swift
- Objective-C
// MyViewController.h
import GFPSDK
class MyViewController : UIViewController, GFPInterstitialAdManagerDelegate {
private var adManager : GFPInterstitialAdManager?
}
// MyViewController.h
@import GFPSDK;
@interface MyViewController : UIViewController <GFPInterstitialAdManagerDelegate>
@property (nonatomic) GFPInterstitialAdManager *adManager;
@end
GFPInterstitialAdManager 사용 가이드
GFPInterstitialAdManager 생성 및 광고 로드 요청
MyViewController.m의 viewDidLoad 메소드에서 GFPInterstitialAdManager의 인스턴스를 생성하고, 광고를 요청합니다.
- 인스턴스 생성 후에는 delegate를 반드시 설정해줍니다.
- GFPInterstitialAdManager 인스턴스를 생성할 때, 발급받으신 광고유닛 ID와 함께, GFPAdParam 에서 사용자 정보를 세팅해주세요. GFPAdParam은 광고 효과를 높이기 위한 타게팅에 사용됩니다.
- Swift
- Objective-C
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()
}
- (void)viewDidLoad {
[super viewDidLoad];
GFPAdParam *adParam = [[GFPAdParam alloc]init];
adParam.yearOfBirth = 1990;
adParam.gender = GFPAdParamGenderTypeMale;
...
//인스턴스 생성
self.adManager = [[GFPInterstitialAdManager alloc] initWithUnitID:@"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 속성을 사용해 광고가 로드된 상태인지 확인할 수 있습니다.
- Swift
- Objective-C
if self.adManager?.isAdLoaded == true {
// 광고가 로드된 상태입니다.
}
if (self.adManager.isAdLoaded) {
// 광고가 로드된 상태입니다.
}
광고 무효화 확인
미리 로드하여 캐싱한 광고를 게재할 경우 반드시 isAdInvalidate 메서드를 사용해 광고가 만료되었는지 확인해야 합니다. 만료된 광고를 게재하면 광고 노출에 대한 보상을 받을 수 없습니다.
- Swift
- Objective-C
if interstitialdAd.isAdInvalidate {
self.adManager?.show(self)
}
if (interstitialdAd.isAdInvalidate) {
[self.adManager show:self];
}
광고 노출 요청 시, 노출에 실패한다면 GFPInterstitialAdManagerDelegate interstitialAdManager:didFailWithError:responseInfo: 메소드가 호출됩니다.
광고 로드와 광고 노출이 분리되어 있기 때문에, 로드를 먼저 한 후에 노출을 하는 형식으로 구현할 수 있습니다. 이 때의 로드된 광고 유효시간은 DFP, FAN : 60분입니다.
GFPInterstitialAdManagerDelegate
GFPInterstitialAdManagerDelegate를 구현하시면, 해당 메서드를 통해서 전면형 광고의 이벤트를 전달받을 수 있습니다.
로드 이벤트
로드 성공 시
- Swift
- Objective-C
func interstitialAdManager(_ manager: GFPInterstitialAdManager, didLoad interstitialAd: GFPInterstitialAd) {
...
}
- (void)interstitialAdManager:(nonnull GFPInterstitialAdManager *)manager didLoadAd:(nonnull GFPInterstitialAd *)interstitialAd {
...
}
로드 실패 시
- Swift
- Objective-C
func interstitialAdManager(_ manager: GFPInterstitialAdManager, didFailWithError error: GFPError, responseInfo: GFPLoadResponseInfo!) {
...
}
- (void)interstitialAdManager:(nonnull GFPInterstitialAdManager *)manager didFailWithError:(nonnull GFPError *)error responseInfo:(nullable GFPLoadResponseInfo *)responseInfo {
...
}
로드 실패 뿐만 아니라 화면 노출 실패, 유효기간 만료 등의 실패 사항도 모두 해당 메서드로 전달받을 수 있습니다.
LifeCycle Event
광고 시청 화면 시작 시
- Swift
- Objective-C
func interstitialAdManager(_ manager: GFPInterstitialAdManager, didStart interstitialAd: GFPInterstitialAd) {
...
}
- (void)interstitialAdManager:(nonnull GFPInterstitialAdManager *)manager didStartAd:(nonnull GFPInterstitialAd *)interstitialAd {
...
}
광고 시청 완료
- Swift
- Objective-C
func interstitialAdManager(_ manager: GFPInterstitialAdManager, didComplete interstitialAd: GFPInterstitialAd) {
...
}
- (void)interstitialAdManager:(nonnull GFPInterstitialAdManager *)manager didCompleteAd:(nonnull GFPInterstitialAd *)interstitialAd {
...
}
광고 화면 사라질 시
- Swift
- Objective-C
func interstitialAdManager(_ manager: GFPInterstitialAdManager, didClose interstitialAd: GFPInterstitialAd) {
...
}
- (void)interstitialAdManager:(nonnull GFPInterstitialAdManager *)manager didCloseAd:(nonnull GFPInterstitialAd *)interstitialAd {
...
}
광고 화면 클릭 시
- Swift
- Objective-C
func interstitialAdManager(_ manager: GFPInterstitialAdManager, wasClickedAd interstitialAd: GFPInterstitialAd) {
...
}
- (void)interstitialAdManager:(nonnull GFPInterstitialAdManager *)manager wasClickedAd:(nonnull GFPInterstitialAd *)interstitialAd {
...
}
7.x.x대의 DFP 버전에서는 클릭 이벤트를 지원하지 않아 이벤트가 오지 않습니다.
아래 메서드들은 @optional로 선언된 delegate 메서드입니다. 필요에 따라 선택적으로 구현할 수 있습니다.
광고 노출(Impression) 발생 시
- Swift
- Objective-C
func interstitialAdManagerDidReceiveImpression(_ manager: GFPInterstitialAdManager) { ... }
- (void)interstitialAdManagerDidReceiveImpression:(nonnull GFPInterstitialAdManager *)manager { ... }
인앱 브라우저 열릴 때
- Swift
- Objective-C
func interstitialAdManagerDidPresentDefaultInAppBrowser(_ manager: GFPInterstitialAdManager) { ... }
- (void)interstitialAdManagerDidPresentDefaultInAppBrowser:(nonnull GFPInterstitialAdManager *)manager { ... }
인앱 브라우저 닫힐 때
- Swift
- Objective-C
func interstitialAdManagerDidDismissDefaultInAppBrowser(_ manager: GFPInterstitialAdManager) { ... }
- (void)interstitialAdManagerDidDismissDefaultInAppBrowser:(nonnull GFPInterstitialAdManager *)manager { ... }