구 API 가이드

- 2015.05.19 : SDK v4.0 부터 전면광고 용 API가 새로운 방식으로 변경되었습니다. 구 API는 계속 제공되지만 기능 업데이트는 더 이상 되지 않으므로 꼭 새로운 API를 적용해주시기 바랍니다.

[Incentive Interstitial Ad]

보상형 전면 광고를 띄우는 것은 아래와 같이 간단히 2줄의 코딩만으로 가능합니다.

Incentive Ad Sample

[[TnkSession sharedInstance] prepareInterstitialAd:TNK_PPI delegate:nil];

[[TnkSession sharedInstance] showInterstitialAd];

[Non-Incentive Intestitial Ad]

비보상형 전면 광고를 띄우는 것은 아래와 같이 2줄의 코딩만으로 가능합니다.

Non-Incentive Ad Sample

[[TnkSession sharedInstance] prepareInterstitialAd:TNK_CPC delegate:nil];

[[TnkSession sharedInstance] showInterstitialAd];

[Display Logic]

보상형 또는 비보상형 전면 광고를 앱 내에 고정하여 코딩하시는 경우 해당 전면광고를 제어할 수 있는 방법이 없으므로 보다 효과적으로 관리하기 위하여 Display Logic을 사용하실 것을 권장합니다.

Display Logic을 사용하시면 전면 광고 노출기간, 빈도수, 광고의 종류 등을 자유롭게 제어하실 수 있습니다. 또한 타사와 크로스 광고를 진행하시고자 할 경우에는 Display Logic을 반드시 적용하여야 합니다. 자세한 내용은 5) Display Logic 을 참고하세요.

Display Logic Sample

[[TnkSession sharedInstance] prepareInterstitialAd:@"your_own_logic_name" delegate:nil];

[[TnkSession sharedInstance] showInterstitialAd];

[Delegate 이용하기]

전면광고의 로딩이 완료되거나 사용자가 전면광고 화면을 닫는 경우 해당 이벤트 발생시점에 필요한 로직을 구현하기 위해서

아래의 TnkAdViewDelegate 프로토콜을 이용할 수 있습니다.

TnkAdViewDelegate protocol

// Interstitial TnkAdViewDelegate 관련 상수값 정의

#define AD_CLOSE_SIMPLE 0 // 사용자가 닫기버튼을 눌러서 광고화면을 닫은 경우

#define AD_CLOSE_CLICK 1 // 사용자가 광고를 클릭해서 화면이 닫히는 경우

#define AD_FAIL_NO_AD -1 // no ad available

#define AD_FAIL_NO_IMAGE -2 // ad image not available

#define AD_FAIL_TIMEOUT -3 // ad arrived after 5 secs.

#define AD_FAIL_CANCEL -4 // ad frequency settings

#define AD_FAIL_SYSTEM -9

#define TNK_PPI @"__tnk_ppi__"

#define TNK_CPC @"__tnk_cpc__"

@protocol TnkAdViewDelegate <NSObject>

@optional

// Called when AdListView is closed

- (void)adListViewClosed;

// 전면광고 화면 닫힐 때 호출됩니다. 화면이 닫히는 이유를 파라메터로 전달해 줍니다.

- (void)adViewDidClose:(int)type;

// 전면 광고를 화면에 띄우지 못했을 경우 호출됩니다.

// 시스템 오류나 광고가 없어서 광고를 띄우지 못했을 경우,

// 광고가 늦게 도착(5초 이상) 하여 광고가 뜨지 않은 경우,

// 광고 노출 주기에 따라서 노출이 취소된 경우에 호출됩니다.

- (void)adViewDidFail:(int)errCode;

// 전면광고 화면이 나타나는 시점에 호출됩니다.

- (void)adViewDidShow;

// 전면 광고 prepare: API 호출 후 show: API 호출 전에 광고가 도착하면 호출됩니다.

// 만약 광고 도착 전에 show: API 가 호출된 경우에는 이후 광고가 도착하였을 때

// 바로 광고가 표시되고 adViewDidShow:가 호출됩니다.

- (void)adViewDidLoad;

@end

전면 광고와 관련되어 TnkAdViewDelegate에서 발생하는 이벤트의 내용은 같습니다.

  • adViewDidClose:(int) type : 전면 화면이 닫히는 시점에 호출됩니다. 화면이 닫히는 이유가 type 파라메터로 전달됩니다.

    • AD_CLOSE_SIMPLE (0) : 사용자가 전면 화면의 닫기 버튼이나 Back 키를 눌러서 닫은 경우입니다.

    • AD_CLOSE_CLICK (1) : 사용자가 전면 화면의 광고를 클릭하여 해당 광고로 이동하는 경우 입니다.

  • adViewDidFail:(int) errCode : 전면 광고를 가져오지 못한 경우 호출이 됩니다. 에러 코드가 errCode 파라메터로 전달됩니다.

    • AD_FAIL_NO_AD (-1) : 제공할 전면광고가 없을 경우입니다.

    • AD_FAIL_NO_IMAGE (-2) : 전면 광고를 가져왔으나 전면 이미지 정보가 없는 경우입니다.

    • AD_FAIL_TIIMEOUT (-3) : showInterstitialAd: 호출 후 5초 이내에 전면광고가 도착하지 않은 경우입니다. 이 경우에는 전면광고를 띄우지 않습니다.

    • AD_FAIL_CANCEL (-4) : prepareInterstitialAd: 호출하였으나 서버에서 설정한 광고 노출 주기가 지나지 않아 취소된 경우입니다.

    • AD_FAIL_SYSTEM (-9) : 서버 또는 네트워크 오류가 발생한 경우입니다.

  • adViewDidLoad : prepareInsterstitialAd: 호출하여 전면광고를 성공적으로 가져온 경우 호출됩니다. 만약 전면광고가 도착하기 전에 showInterstitialAd: 가 호출되었다면 이후 전면광고 도착시 adViewDidLoad 가 호출되지 않고 바로 전면광고가 보여지면서 adViewDidShow 가 호출됩니다.

  • adViewDidShow : 전면광고가 화면에 나타날 때 호출됩니다.

TnkAdViewDelegate는 prepareInterstitialAd: 나 showInterstitialAd: 의 마지막 파라메터로 지정할 수 있습니다.

아래의 예시는 TnkAdViewDelegate를 사용하여 광고가 로딩되는 시점에 앱의 상태를 판단하여 광고를 띄울지 말지 결정하는 방식의 구현 예시입니다.

TnkAdViewDelegate Sample

#import "tnksdk.h"

@interface ViewController : UIViewController <TnkAdViewDelegate> {

// ...

}

@implementation ViewController

- (IBAction) interstitialPressed:(id)sender {

[[TnkSession sharedInstance] prepareInterstitialAd:TNK_PPI delegate:self];

}

#pragma mark - TnkAdViewDelegate

- (void) adListViewClosed {

NSLog(@"Ad list closed");

}

- (void) adViewDidClose:(int)type {

NSLog(@"### didClose %d", type);

}

- (void) adViewDidFail:(int)errCode {

NSLog(@"### didFail %d", errCode);

}

- (void) adViewDidShow {

NSLog(@"### didShow");

}

- (void) adViewDidLoad {

NSLog(@"### didLoad");

if (isOkToShow) {

[[TnkSession sharedInstance] showInterstitialAd];

}

}

[Interstitial Ad APIs]

전면 광고를 띄우기 위해서 사용하는 prepareInterstitialAd: 와 showInterstitialAd: 의 API 규약은 아래와 같습니다.

- TnkSession - prepareInterstitialAd:

Method

- (void) prepareInterstitialAd:(NSString *)logicName delegate:(id<TnkAdViewDelegate>)delegate

Description

하나의 전면광고를 로딩합니다. 로딩된 전면광고는 이후 showInterstitialAd API를 호출하여 화면에 띄울수 있습니다.

Parameters

- TnkSession - showInterstitialAd:

Method

- (void) showInterstitialAd

- (void) showInterstitialAd:(id<TnkAdViewDelegate>)delegate

- (void) showInterstitialAd:(id<TnkAdViewDelegate>)delegate on:(UIViewController *)viewController

Description

prepareInterstitialAd:를 통하여 로딩된 전면광고를 화면에 띄웁니다. 정상적으로 광고가 화면에 나타나면 TnkAdViewDelegate의 adViewDidShow가 호출되며, showInterstitialAd: 호출 후 5초 이내에 광고가 로딩되지 않으면 이후에 광고가 도착하더라도 화면에 나타나지 않고, TnkAdViewDelegate 객체의 adViewDidFail: 이 호출됩니다.

Parameters

파라메터 명칭

delegate

내용

TnkAdViewDelegate 객체

지정하지 않으면 prepareInterstitialAd 호출시 지정한 delegate 객체가 사용된다.