시작하기
네이티브 심플형 광고는 이미지가 단독으로 존재하는 네이티브 형 광고입니다.
NAMSDK Import
SDK 모듈을 import 합니다.
- Swift
- Objective-C
import GFPSDK
@import GFPSDK;
네이티브 광고 제공자 초기화
연동할 네이티브 광고 제공자의 Pod이 프로젝트에 추가된 상태에서 GFPAdManager를 통해 초기화 합니다. (앱이 구동되는 시점에 한번만 수행)
| Provider Option | Ad Provider | CocoaPods |
|---|---|---|
| GFPNativeProviderOptionNDA | 네이버 NDA | pod 'GFPSDK/MediationNDA' |
| GFPNativeProviderOptionLAN | LINE Ads Network | pod 'GFPSDKMediationLAN' |
- Swift
- Objective-C
// DFP, NDA, Inmobi, Facebook 광고를 연동하려는 경우 cocoapods 의존성 추가.
GFPAdManager.setup(withPublisherCd: "publisherCd") { (error : GFPError?) in
print("Setup Eror: \(String(describing: error?.description))")
}
// DFP, NDA, Inmobi, Facebook 광고를 연동하려는 경우 cocoapods 의존성 추가.
[GFPAdManager setupWithPublisherCd:@"publisherCd" completionHandler:^(GFPError * _Nullable error) {
NSLog(@"Setup ERROR: %@", error);
}];
GFPAdManager 상세 설정 방법은 광고매니저 설정을 참고해 주세요.
뷰 컨트롤러 작성
뷰 컨트롤러(MyViewController)를 만들고, 헤더파일(MyViewController.h)에 아래 작업을 수행합니다.
(이 예제에서는 하나의 뷰 컨트롤러가 모든 이벤트 프로토콜을 구현합니다.)
- 뷰 컨트롤러에 GFPAdLoader *adLoader 프로퍼티를 선언합니다.
- 뷰 컨트롤러에 GFPAdLoaderDelegate 프로토콜을 구현합니다.
- 뷰 컨트롤러에 GFPNativeSimpleAd *nativeSimpleAd 프로퍼티를 선언합니다.
- 뷰 컨트롤러에 GFPNativeSimpleAdDelegate 프로토콜을 구현합니다.
GFPAdLoaderDelegate는 네이티브 (및 배너) 광고 로드 관련 이벤트를, GFPNativeSimpleAdDelegate 로드된 네이티브 객체의 노출, 클릭, 렌더링 에러등의 이벤트를 전달합니다.
- Swift
- Objective-C
// MyViewController.h
import GFPSDK
class MyViewController : UIViewController, GFPAdLoaderDelegate, GFPNativeSimpleAdDelegate {
private var adLoader : GFPAdLoader?
private var nativeSimpleAd : GFPNativeSimpleAd?
private var nativeSimpleAdView : GFPNativeSimpleAdView?
}
// MyViewController.h
@import GFPSDK;
@interface MyViewController : UIViewController <GFPAdLoaderDelegate, GFPNativeSimpleAdDelegate>
@property (nonatomic) GFPAdLoader *adLoader;
@property (nonatomic) GFPNativeSimpleAd *nativeSimpleAd;
@property (nonatomic) GFPNativeSimpleAdView *nativeSimpleAdView;
@end
GFPAdLoader 생성 및 광고 요청
MyViewController.m의 viewDidLoad 메소드에서 GFPAdLoader의 인스턴스를 생성하고, 광고를 요청합니다.
- GFPAdLoader 인스턴스를 생성할 때, 발급받으신 광고유닛 ID와 함께, GFPAdParam 에서 사용자 정보를 세팅해주세요. GFPAdParam은 광고 효과를 높이기 위한 타게팅에 사용됩니다.
- Swift
- Objective-C
override func viewDidLoad() {
super.viewDidLoad()
let adParam = GFPAdParam()
adParam.yearOfBirth = 1990
adParam.gender = .male
...
self.adLoader = GFPAdLoader(unitID: "UnitId", rootViewController: self, adParam: adParam)
let nativeSimpleOption = GFPAdNativeSimpleOptions()
nativeSimpleOption.simpleAdRenderingSetting = ... // 로드될 네이티브 심플형 광고 렌더링 설정
self.adLoader?.setNativeSimpleDelegate(self, nativeSimpleOptions: nativeSimpleOption)
self.adLoader?.delegate = self
self.adLoader?.loadAd()
}
- (void)viewDidLoad {
[super viewDidLoad];
GFPAdParam *adParam = [[GFPAdParam alloc]init];
adParam.yearOfBirth = 1990;
adParam.gender = GFPAdParamGenderTypeMale;
...
self.adLoader = [[GFPAdLoader alloc] initWithUnitID:self.unitID
rootViewController:self
adParam:adParam];
GFPAdNativeSimpleOptions *nativeSimpleOptions = [[GFPAdNativeSimpleOptions alloc] init];
nativeSimpleOptions.simpleAdRenderingSetting = ...; // 로드될 네이티브 심플형 광고 렌더링 설정
[self.adLoader setNativeSimpleDelegate:self nativeSimpleOptions:nativeSimpleOptions];
// 광고 요청
self.adLoader.delegate = self;
[self.adLoader loadAd];
}
광고 요청 성공 시 GFPAdLoaderDelegate의 adLoader:didReceiveNativeSimpleAd: 메소드가 호출됩니다.
GFPAdLoaderDelegate
GFPAdLoaderDelegate를 구현하시면, 해당 메서드를 통해 광고 로드 관련 이벤트를 받으실 수 있습니다.
로드 성공시
네이티브 광고 로드가 성공하면, GFPNativeSimpleAd 객체가 응답값으로 넘어옵니다.
GFPNativeSimpleAd객체를 이용하여 네이티브 광고 뷰(UIView)를 생성하게 됩니다.
GFPNativeSimpleAd객체를 이용하여 네이티브 광고 뷰를 구성하는 방법은 네이티브 광고 뷰 생성를 확인해주세요.
- Swift
- Objective-C
func adLoader(_ unifiedAdLoader: GFPAdLoader!, didReceive nativeSimpleAd: GFPNativeSimpleAd!) {
// nativeSimpleAd 객체를 이용하여 광고 뷰 생성
...
}
- (void)adLoader:(GFPAdLoader *)unifiedAdLoader didReceiveNativeSimpleAd:(GFPNativeSimpleAd *)nativeSimpleAd {
// nativeSimpleAd 객체를 이용하여 광고 뷰 생성
...
}
로드 실패시
- Swift
- Objective-C
func adLoader(_ unifiedAdLoader: GFPAdLoader!, didFailWithError error: GFPError!, responseInfo: GFPLoadResponseInfo!) {
...
}
- (void)adLoader:(GFPAdLoader *)unifiedAdLoader didFailWithError:(GFPError *)error responseInfo:(GFPLoadResponseInfo *)responseInfo {
...
}
네이티브 광고 렌더링
GFPNativeSimpleAd가 성공적으로 로드되면, 네이티브 광고를 렌더링할 수 있습니다.
이를 위해서는 네이티브 광고의 요소가 정의된 뷰 객체가 필요하며, 이 객체는 GFPNativeSimpleAdView 클래스를 상속해야 합니다.
이 문서에서는 인터페이스 빌더를 사용하여 뷰를 구성합니다.
네이티브 심플형 광고 뷰 생성
-
네이티브 광고용 뷰(xib)를 만들고, Xcode 의 Identity Inspector 탭에서 Custom Class를 GFPNativeSimpleAdView 로 설정합니다.

-
네이티브 광고 뷰를 구성하는 각 에셋 뷰(title, body 등등)를 만들고, Connections Inspector 탭에서 GFPNativeSimpleAdView의 해당 Outlet과 연결합니다.
GFPNativeSimpleAdView는 GFPNativeBaseView를 상속하며, mediaView의 Outlet은 GFPNativeBaseView.h 에 정의되어 있습니다.
- 광고의 동영상 또는 이미지를 표시하는 데 사용되는 mediaView도 Custom Class를 GFPMediaView로 설정해주어야 합니다.

- 네이티브 광고 로드이후 아래와 같은 형태로 구현이 가능합니다.
- Swift
- Objective-C
func adLoader(_ unifiedAdLoader: GFPAdLoader!, didReceive nativeSimpleAd: GFPNativeSimpleAd!) {
// 네이티브 광고객체 및 delegate 등록
self.nativeSimpleAd = nativeSimpleAd
self.nativeSimpleAd?.delegate = self
// 뷰 객체에 네이티브 광고를 세팅하면, mediaView 렌더링 및 뷰 트래킹이 시작됨.
self.nativeSimpleAdView?.nativeAd = nativeSimpleAd
// subview 등록
self.view.addSubview(self.nativeSimpleAdView)
}
- (void)adLoader:(GFPAdLoader *)unifiedAdLoader didReceiveNativeSimpleAd:(GFPNativeSimpleAd *)nativeSimpleAd {
// 네이티브 광고객체 및 delegate 등록
self.nativeSimpleAd = nativeSimpleAd;
self.nativeSimpleAd.delegate = self;
// 뷰 객체에 네이티브 광고를 세팅하면, mediaView 렌더링 및 뷰 트래킹이 시작됨.
self.nativeSimpleAdView.nativeAd = nativeSimpleAd;
// subview 등록
[self.view addSubview:self.nativeSimpleAdView]
}
GFPNativeSimpleAdDelegate
네이티브 광고가 노출, 클릭 되었을때 이벤트가 전달 됩니다.
광고 노출 이벤트 발생시
- Swift
- Objective-C
func nativeSimpleAdWasSeen(_ nativeSimpleAd: GFPNativeSimpleAd) {
...
}
- (void)nativeSimpleAdWasSeen:(GFPNativeSimpleAd *)nativeSimpleAd {
...
}
광고 rendered 이벤트 발생시
- Swift
- Objective-C
func nativeSimpleAdWasRendered(_ nativeSimpleAd: GFPNativeSimpleAd) {
...
}
- (void)nativeSimpleAdWasRendered:(GFPNativeSimpleAd *)nativeSimpleAd {
...
}
클릭 이벤트 발생시
- Swift
- Objective-C
func nativeSimpleAdWasClicked(_ nativeSimpleAd: GFPNativeSimpleAd) {
...
}
- (void)nativeSimpleAdWasClicked:(GFPNativeSimpleAd *)nativeSimpleAd {
...
}
렌더링 에러 발생시
- Swift
- Objective-C
func nativeSimpleAd(_ nativeSimpleAd: GFPNativeSimpleAd, didFailWithError error: GFPError) {
...
}
- (void)nativeSimpleAd:(GFPNativeSimpleAd *)nativeSimpleAd didFailWithError:(GFPError *)error {
...
}
광고 미디어 뷰 사이즈 변경
Native Simple의 경우 단일 이미지 광고 이므로, 해당 이벤트 수신 시 Native Simple Ad View 및 Media View의 크기를 변경해주어야 합니다.
- Swift
- Objective-C
func nativeSimpleAd(_ nativeSimpleAd: GFPNativeSimpleAd, didChangeMediaViewSizeWith size: CGSize) {
...
}
- (void)nativeSimpleAd:(GFPNativeSimpleAd *)nativeSimpleAd didChangeMediaViewSizeWith:(CGSize)size {
...
}
광고가 사용자에 의해 Mute 되었을 때
광고가 Mute 되었을 때, 서비스에 콜백을 통해 Mute 를 알립니다. Mute 후 NAMSDK에서는 "이 광고는 더 이상 보이지 않습니다." 라는 화면을 노출하고 있으며, 서비스의 정책에 따라 광고를 화면에서 없앨 지/그대로 노출할 지를 정합니다.
- Swift
- Objective-C
func nativeSimpleAdWasMuted(_ nativeSimpleAd: GFPNativeSimpleAd) {
}
- (void)nativeSimpleAdWasMuted:(GFPNativeSimpleAd *)nativeSimpleAd {
}
Mute 취소 시
- Swift
- Objective-C
func nativeSimpleAdWasCanceledMute(_ nativeSimpleAd: GFPNativeSimpleAd) {
}
- (void)nativeSimpleAdWasCanceledMute:(GFPNativeSimpleAd *)nativeSimpleAd {
}
인앱 브라우저 표시 / 닫힘 이벤트
광고 클릭 후 기본 인앱 브라우저가 표시되거나 닫힐 때 호출됩니다.
- Swift
- Objective-C
func nativeSimpleAdDidPresentDefaultInAppBrowser(_ nativeSimpleAd: GFPNativeSimpleAd) {
// 인앱 브라우저 표시됨
}
func nativeSimpleAdDidDismissDefaultInAppBrowser(_ nativeSimpleAd: GFPNativeSimpleAd) {
// 인앱 브라우저 닫힘
}
- (void)nativeSimpleAdDidPresentDefaultInAppBrowser:(GFPNativeSimpleAd *)nativeSimpleAd {
// 인앱 브라우저 표시됨
}
- (void)nativeSimpleAdDidDismissDefaultInAppBrowser:(GFPNativeSimpleAd *)nativeSimpleAd {
// 인앱 브라우저 닫힘
}
Lazy Loading 미디어 로딩 완료 / 실패
Lazy Loading 사용 시 미디어 로딩 완료 또는 실패 시 호출됩니다.
- Swift
- Objective-C
func nativeSimpleAdDidLoadMedia(_ nativeSimpleAd: GFPNativeSimpleAd) {
// 미디어 로딩 완료
}
func nativeSimpleAdDidFailToLoadMedia(_ nativeSimpleAd: GFPNativeSimpleAd) {
// 미디어 로딩 실패
}
- (void)nativeSimpleAdDidLoadMedia:(GFPNativeSimpleAd *)nativeSimpleAd {
// 미디어 로딩 완료
}
- (void)nativeSimpleAdDidFailToLoadMedia:(GFPNativeSimpleAd *)nativeSimpleAd {
// 미디어 로딩 실패
}
기타
광고 무효화 확인
네이티브 심플 광고는 만료 시간이 있으므로, 미리 로드하여 캐싱한 광고를 게재할 경우 반드시 isAdInvalidate 메서드를 사용해 광고가 만료되었는지 확인해야 합니다. 만료된 광고를 게재하면 광고 노출에 대한 보상을 받을 수 없습니다.
- Swift
- Objective-C
func adLoader(_ unifiedAdLoader: GFPAdLoader!, didReceive nativeSimpleAd: GFPNativeSimpleAd!) {
// 네이티브 광고객체 및 delegate 등록
self.nativeSimpleAd = nativeSimpleAd
self.nativeSimpleAd?.delegate = self
// 광고가 이미 만료되었거나 무효화되었는지 확인하고, 그 경우 광고를 표시하지 않습니다.
// 무효화된 광고를 표시해도 수익을 받을 수 없습니다.
if nativeSimpleAd.isAdInvalidate {
print("This ad has been invalidated. Try again!")
return
}
// 뷰 객체에 네이티브 광고를 세팅하면, mediaView 렌더링 및 뷰 트래킹이 시작됨.
self.nativeSimpleAdView?.nativeAd = nativeSimpleAd
// subview 등록
self.view.addSubview(self.nativeSimpleAdView!)
}
- (void)adLoader:(GFPAdLoader *)unifiedAdLoader didReceiveNativeSimpleAd:(GFPNativeSimpleAd *)nativeSimpleAd {
// 네이티브 광고객체 및 delegate 등록
self.nativeSimpleAd = nativeSimpleAd;
self.nativeSimpleAd.delegate = self;
// 광고가 이미 만료되었거나 무효화되었는지 확인하고, 그 경우 광고를 표시하지 않습니다.
// 무효화된 광고를 표시해도 수익을 받을 수 없습니다.
if (nativeSimpleAd.isAdInvalidate) {
NSLog(@"This ad has been invalidated. Try again!");
return;
}
// 뷰 객체에 네이티브 광고를 세팅하면, mediaView 렌더링 및 뷰 트래킹이 시작됨.
self.nativeSimpleAdView.nativeAd = nativeSimpleAd;
// subview 등록
[self.view addSubview:self.nativeSimpleAdView];
}
