본문으로 건너뛰기

시작하기

배너 광고는 앱에 레이아웃 내에 표시되는 직사각형 이미지 형태의 광고로서 WebView 로 구현된 광고형태입니다.

샘플 이미지

선행 챕터

NAMSDK Import

SDK 모듈을 import 합니다.

import GFPSDK

배너 광고 제공자 초기화

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

  • GFPBannerProviderOptionDFP : 구글 DFP 배너 광고
  • GFPBannerProviderOptionNDA : 네이버 디스플레이 배너 광고
  • GFPBannerProviderOptionInMobi : 인모비 배너 광고
  • GFPBannerProviderOptionFAN : 페이스북 배너 광고
// DFP, NDA, Inmobi, Facebook 배너 광고를 연동하려는 경우 cocoapods 의존성 추가.
GFPAdManager.setup(withPublisherCd: "publisherCd") { (error : GFPError?) in
print("Setup Eror: \(String(describing: error?.description))")
}

뷰 컨트롤러 작성

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

  1. 뷰 컨트롤러에 GFPAdLoader *adLoader 프로퍼티를 선언합니다.
  2. 뷰 컨트롤러에 GFPAdLoaderDelegate 프로토콜을 구현합니다.
  3. 뷰 컨트롤러에 GFPBannerView *bannerView 프로퍼티를 선언합니다.
  4. 뷰 컨트롤러에 GFPBannerViewDelegate 프로토콜을 구현합니다.
정보

GFPAdLoaderDelegate는 배너 (및 네이티브) 광고 로드 관련 이벤트를, GFPBannerViewDelegate 로드된 배너 객체의 노출, 클릭, 렌더링 에러등의 이벤트를 전달합니다.

// MyViewController.h
import GFPSDK

class MyViewController : UIViewController, GFPAdLoaderDelegate, GFPBannerViewDelegate {
private var adLoader : GFPAdLoader?
private var bannerView : GFPBannerView?
}

GFPAdLoader 생성 및 광고 요청

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

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

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

self.adLoader = GFPAdLoader(unitID: "UnitId", rootViewController: self, adParam: adParam)

let bannerOption = GFPAdBannerOptions()
bannerOption.layoutType = .fluidWidth
self.adLoader?.setBannerDelegate(self, bannerOptions: bannerOption)

self.adLoader?.delegate = self
self.adLoader?.loadAd()
}

배너 광고 요청 성공 시 GFPAdLoaderDelegate의 adLoader:didReceiveBannerAd: 메소드가 호출됩니다. GFPBannerView는 일반적인 뷰 객체(UIView)이므로, 뷰 계층구조에 포함될 수 있습니다.

GFPAdLoaderDelegate 구현

GFPAdLoaderDelegate를 구현하시면, 해당 메서드를 통해 광고 로드 관련 이벤트를 받으실 수 있습니다.

로드 성공 및 실패

배너 로드 성공시

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

func adLoader(_ unifiedAdLoader: GFPAdLoader!, didReceiveBannerAd bannerView: GFPBannerView!) {
self.view.addSubview(bannerView)
// constraint 설정
...
}

로드 실패시

func adLoader(_ unifiedAdLoader: GFPAdLoader!, didFailWithError error: GFPError!, responseInfo: GFPLoadResponseInfo!) {
// ...
}

네이티브 광고 로드 성공시

GFPAdLoader에 nativeSimpleOption 혹은 nativeOption을 설정한 경우인 경우, 배너 혹은 네이티브 광고가 내려올 수 있습니다.

GFPBannerViewDelegate 구현

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

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

MRAID 3.0 에서 추가된 스펙인 Unload 호출 시 호출되는 메서드로, 메서드 이후에 GFPBannerView의 내부 광고 뷰는 모두 제거됩니다.

func bannerShouldUnload(_ bannerView: GFPBannerView) {
// ...
}

로드 이후 발생되는 이벤트

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

광고 노출 이벤트 발생시

func bannerAdWasSeen(_ bannerView: GFPBannerView) {
...
}

광고 rendered 이벤트 발생시

func bannerAdWasRendered(_ bannerView: GFPBannerView) {
...
}

클릭 이벤트 발생시

func bannerAdWasClicked(_ bannerView: GFPBannerView) {
...
}

광고 사이즈 변경 시

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

광고 사이즈가 변경시 호출되었을 때 먼저 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 값 변경 필요.
func bannerView(_ bannerView: GFPBannerView, didChangeWith size: GFPBannerAdSize) {
...
}

광고 Meta 데이터 변경 시

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

func bannerView(_ bannerView: GFPBannerView, didChangeAdMeta adMeta: [String : String]) {
...
//adMeta example: ["bgcolor":"#000000", "fontcolor":"#FFFFFF"]
}

광고가 사용자에 의해 Mute 되었을 때

광고가 Mute 되었을 때, 서비스에 콜백을 통해 Mute 를 알립니다. Mute 후 GFPSDK에서는 "이 광고는 더 이상 보이지 않습니다." 라는 화면을 노출하고 있으며, 서비스의 정책에 따라 광고를 화면에서 없앨 지/그대로 노출할 지를 정합니다.

func bannerAdWasMuted(_ bannerView: GFPBannerView) {

}