본문으로 건너뛰기

Banner Guide (Deprecated)

GFPSDK Import

GFPSDK 모듈을 import 합니다.

@import GFPSDK;

배너 광고 제공자 초기화

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

  • GFPBannerProviderOptionDFP : 구글 DFP 배너 광고
  • GFPBannerProviderOptionNDA : 네이버 디스플레이 배너 광고
  • GFPBannerProviderOptionMoPub : 모펍 배너 광고
  • GFPBannerProviderOptionInMobi : 인모비 배너 광고
  • GFPBannerProviderOptionFAN : 페이스북 배너 광고
// DFP, NDA, Mopub, Inmobi, Facebook 배너 광고를 연동하려는 경우 cocoapods 의존성 추가.
GFPError *error = nil;
[GFPAdManager setupWithError:&error];

뷰 컨트롤러 작성

뷰 컨트롤러(MyViewController)를 만들고, 헤더파일(MyViewController.h)에 아래 작업을 수행합니다.

  1. 뷰 컨트롤러에 GFPBannerView *bannerView 프로퍼티를 선언합니다.
  2. 뷰 컨트롤러에 GFPBannerViewDelegate 프로토콜을 구현합니다.
// MyViewController.h

@import GFPSDK;

@interface MyViewController : UIViewController <GFPBannerViewDelegate>

@property (nonatomic) GFPBannerView *bannerView;

@end

GFPBannerView 생성 및 광고 요청

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

  • GFPBannerView 인스턴스를 생성할 때, 발급받으신 광고유닛 ID와 함께, GFPAdParam 에서 사용자 정보를 세팅해주세요. GFPAdParam은 광고 효과를 높이기 위한 타게팅에 사용됩니다.
  • GFPBannerView는 일반적인 뷰 객체(UIView)이므로, 뷰 계층구조에 포함될 수 있습니다.
- (void)viewDidLoad {
[super viewDidLoad];

GFPAdParam *adParam = [[GFPAdParam alloc] init];
adParam.yearOfBirth = 1990;
adParam.gender = GFPAdParamGenderTypeMale;
...

self.bannerView = [[GFPBannerView alloc] initWithAdUnitID:@"YOUR_UNIT_ID"
rootViewController:self
adParam:adParam];
// 광고 요청
self.bannerView.delegate = self;
[self.bannerView loadAd];
}

정보

모펍의 경우 rootViewController가 nil이면, 내부적으로 UIApplication.sharedApplication.delegate.window.rootViewController로 세팅됨

추가 설정 가능 요소들

광고 렌더링 타입 (기본값 GFPDisplayAgentTypeInApp)

광고 클릭 시, Safari로 이동, In-App 이동(Mopub 지원을 위함), Scheme을 통한 이동을 지원하는 설정입니다.
광고 Banner, Native, Video 옵션 설정 후 세팅해 주시면 됩니다.

Scheme Type 설정 후 아래 AppScheme 해당하는 String 값을 설정해 주시면 됩니다.

// Safari로 이동 옵션.
GFPRenderDisplayAgent *displayAgent = [[GFPRenderDisplayAgent alloc] initWithType: GFPDisplayAgentTypeNativeSafari];
[GFPAdManager adConfiguration].displayAgent = displayAgent;

// 별도의 App scheme 설정 옵션.
GFPRenderDisplayAgent *displayAgent = [[GFPRenderDisplayAgent alloc] initWithType: GFPDisplayAgentTypeScheme scheme: AppScheme];
[GFPAdManager adConfiguration].displayAgent = displayAgent;

광고 요청 타임아웃 (기본값 60초)

광고요청 이후 지정한 시간(초)경과 까지 광고 응답을 얻지 못하면 기존 요청이 무효화되며, GFPBannerViewDelegate의 bannerView:didFailToReceiveAdWithError: 메소드가 호출됩니다.

self.banerView.requestTimeoutInterval = ...

네이티브 광고 동시 로드

배너광고를 로드할때, 배너 또는 네이티브 광고 중 하나를 응답받을 수 있도록 설정할 수 있습니다.

self.banerView.nativeAdLoadable = YES;
self.banerView.nativeAdRenderingSetting = ...; // 로드될 네이티브 광고 렌더링 설정
[self.bannerView load];

네이티브 광고가 로드된 경우, GFPBannerViewDelegate의 bannerView:didLoadNativeAd: 메서드가 호출됩니다.

배너 레이아웃 타입 설정

레이아웃을 설정하지 않은 경우 기본 값은 고정형(GFPBannerViewLayoutTypeFixed) 입니다.

  • GFPBannerView.adSize 를 통해 광고 소재의 사이즈 정보를 얻으실 수 있습니다.
  • 고정형을 제외한 레이아웃 타입(=확장형)을 설정할 경우, 가로 확장형 레이아웃 설정을 권장합니다.
고정형 레이아웃 설정 (Fixed)
  • 서비스에서 설정한 광고 컨테이너 크기에 관계 없이 광고 영역의 크기가 고정된 형태입니다.
self.banerView.layoutType = GFPBannerViewLayoutTypeFixed;
가로 확장형 레이아웃 설정 (FluidWidth)
  • 배너광고의 가로 폭을 직접 설정할 수 있습니다.
self.banerView.layoutType = GFPBannerViewLayoutTypeFluidWidth;
  • 가로 확장형으로 레이아웃 타입을 설정하고, GFPBannerView의 가로 크기를 원하는 크기로 조절합니다.
self.bannerView.translatesAutoresizingMaskIntoConstraints = NO;
[self.bannerView.widthAnchor constraintEqualToConstant:SUPERVIEW_SIZE.width].active = YES;
/*
원하는 가로 크기만큼 bannerView frame 세팅.
*/
CGRect frame = CGRectMake(/*원하는 X 좌표*/, /*원하는 Y 좌표*/, /*원하는 가로 크기*/, /*원하는 세로 크기*/);
[self.bannerView setFrame: frame];
  • 가로 확장이 지원되는 광고가 로드된 경우 지정하신 GFPBannerView의 가로 크기에 맞게 꽉 채워지도록 광고가 그려지고, 고정형 광고가 로드된 경우 가로 양쪽에 남는 크기는 여백으로(가운데 정렬됨) 그려집니다.
세로 확장형 레이아웃 설정 (FluidHeight)
  • 세로 확장형으로 레이아웃 타입을 설정하여, 배너 광고의 세로 폭을 직접 설정할 수 있습니다.
self.banerView.layoutType = GFPBannerViewLayoutTypeFluidHeight;
확장형 레이아웃 설정 (Fluid)
  • 확장형으로 레이아웃 타입을 설정하여, 배너 광고의 가로/세로 폭을 직접 설정할 수 있습니다.
self.banerView.layoutType = GFPBannerViewLayoutTypeFluid;

광고 전달 데이터 설정

hostMeta(매채와 광고간의 약속된 데이터)를 설정하여 광고 소재에 필요한 데이터를 전달합니다. hostMeta의 Key/Value는 모두 문자열 타입입니다.

//example
self.bannerView.hostMeta = [NSDictionary dictionaryWithObjectsAndKeys:@"dark", @"theme", nil];

GFPBannerViewDelegate 구현

GFPBannerViewDelegate를 구현하시면, 해당 메서드를 통해 이벤트를 받으실 수 있습니다.

로드 성공 및 실패

배너 로드 성공시

배너 광고 로드가 성공하면, 광고를 원하는 위치에 게제하고, 필요한 경우 적절하게 constraint를 설정합니다.

- (void)bannerViewDidReceiveAd:(nonnull GFPBannerView *)bannerView {
[self.view addSubview:bannerView];
// constraint 설정
...
}

네이티브 광고 로드 성공시

self.banerView.nativeAdLoadable = YES인 경우, 배너 혹은 네이티브 광고가 내려올 수 있습니다.
네이티브 광고가 로드되는 경우, GFPNativeAd 객체를 이용하여 네이티브 광고뷰를 만들어 화면에 게제합니다.

네이티브 광고 관련 내용은 네이티브 광고 가이드 문서를 참고해 주세요.

- (void)bannerView:(GFPBannerView *)bannerView didLoadNativeAd:(GFPNativeAd *)nativeAd {
//nativeAd 객체를 이용해 네이티브 광고 광고뷰 생성
...
}

로드 실패시

- (void)bannerView:(GFPBannerView *)bannerView didFailToReceiveAdWithError:(GFPError *)error {
// ...
}

MRAID 3.0 적용 시 소재에서 Unload 호출 시

MRAID 3.0 에서 추가된 스펙인 Unload 호출 시 호출되는 메서드로, 메서드 이후에 GFPBannerView 는 자동으로 SuperView에서 제거됩니다.

- (void)bannerShouldUnload:(GFPBannerView *)bannerView{
// ...
}

로드 이후 발생되는 이벤트

자세한 내용은 GFPBannerViewDelegate.h 파일을 참고해 주세요.

광고 노출 이벤트 발생시

- (void)bannerAdWasSeen:(GFPBannerView *)bannerView {
...
}

클릭 이벤트 발생시

- (void)bannerAdWasClicked:(GFPBannerView *)bannerView {
...
}

광고 사이즈 변경 시

광고 소재에 의해 사이즈 변경 시 호출됩니다.

광고 사이즈가 변경시 호출되었을 때 먼저 GFPBannerSizeType을 통해 Fixed인지 Fluid인지 판단하여 Fluid라면 원하는 사이즈로 변경이 가능합니다. (GFPBannerAdSize.h 파일 참조)

  • FluidWidth 일 경우 size.width = -1 이므로 원하는 Width 값 변경 필요.
  • FluidHeight 일 경우 size.height = -1 이므로 원하는 Height 값 변경 필요.
  • Fluid 일 경우 size.width = -1, size.height = -1 이므로 원하는 Width, Height 값 변경 필요.
- (void)bannerView:(GFPBannerView *)bannerView didChangeWith:(GFPBannerAdSize *)size {
...
}

광고 Meta 데이터 변경 시

광고 소재에 의해 광고 Meta 데이터 변경 시 호출됩니다.

- (void)bannerView:(GFPBannerView *)bannerView didChangeAdMeta:(NSDictionary <NSString *, NSString *>*)adMeta {
...
//adMeta example: { 'bgcolor':'#000000', 'fontcolor':'#FFFFFF' };
}