4. Interstitial Ad‎ > ‎2) iOS‎ > ‎

구 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
 파라메터 명칭 내용
 logicName 보상형 광고의 경우에는 TNK_PPI, 비보상형 광고의 경우에는 TNK_CPC 를 넣어줍니다.
또는 자신만의 명칭을 넣은 후 Tnk 사이트에서 원하는 형태의 광고를 띄우도록 제어할 수 있습니다. ( [Display Logic] 참고)
 delegate TnkAdViewDelegate 객체, 지정하지 않으려면 nil 을 입력합니다.
 viewController 전면광고를 노출할 UIViewController 객체를 지정합니다. 설정하지 않은 경우에는 현재 UIWindow의 rootViewController 를 사용합니다.

- 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 객체가 사용된다.
Comments