4) Cocos2dX

전면 광고 적용을 위해서는 Tnk 사이트에서 앱 등록 및 Cocos2dx 관련 설정이 우선 선행되어야합니다.

[Cocos2dx Settings] 의 내용을 우선 확인해주세요.

[Incentive Interstitial Ad]

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

Incentive Ad Sample

#include "TnkAdPlugin.h"

void HelloWorld::buttonTapped()

{

// ...

TnkAdPlugin::prepareInterstitialAd(TNK_PPI);

TnkAdPlugin::showInterstitialAd();

}

[Non-Incentive Intestitial Ad]

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

Non-Incentive Ad Sample

#include "TnkAdPlugin.h"

void HelloWorld::buttonTapped()

{

// ...

TnkAdPlugin::prepareInterstitialAd(TNK_CPC);

TnkAdPlugin::showInterstitialAd();

}

[EventHandler 이용하기]

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

EventHandler 클래스는 포인트 조회나 포인트 인출과 같이 비동기로 결과를 받아야 하는 경우 또는 중간 전면광고에서 발생하는 이벤트를 처리하기 위해서 제공되는 클래스입니다.

EventHandler 에 대한 자세한 내용은 [나. EventHandler] 를 참고하세요.

전면 광고와 관련되어 EventHandler에서 발생하는 이벤트들은 아래와 같습니다.

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

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

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

    • TNK_CLOSE_EXIT (2) : 전면 화면에 앱 종료버튼이 있는 경우 사용자가 앱 종료 버튼을 누른 경우입니다. 이 경우 앱을 종료하는 로직을 EventHandler에 구현해야합니다.

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

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

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

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

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

      • FAIL_NOT_PREPARED (-5) : prepareInterstitialAd()를 호출하지 않고 showInterstitialAd()를 호출한 경우입니다.

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

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

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

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

TnkAdEventHandler 예시

void HelloWorld::showYourAd() {

TnkAdPlugin::prepareInterstitialAd(TNK_PPI, 3);


}

// TnkAdEvnetHandler

void HelloWorld::onLoad(int handleId) {

if (isOkToShow) {

TnkAdPlugin::showInterstitialAd();

}

}

[Interstitial Ad APIs]

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

- TnkPlugin::prepareInterstitialAd()

Method

- void TnkPlugin::prepareInterstitialAd(const char *displayLogic)

- void TnkPlugin::prepareInterstitialAd(const char *displayLogic, int handleId)

Description

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

Parameters

파라메터 명칭

displayLogic

handleId

내용

보상형 광고의 경우에는 TNK_PPI, 비보상형 광고의 경우에는 TNK_CPC 를 넣어줍니다.

또는 자신만의 명칭을 넣은 후 Tnk 사이트에서 원하는 형태의 광고를 띄우도록 제어할 수 있습니다. ( [Display Logic] 참고)

전면광고 화면 관련해서 이벤트가 발생하면 TnkAdEventHandler 객체의 관련 메소드가 호출되며 이때 handleId 값이 전달됩니다.

- TnkPlugin::showInterstitialAd()

Method

- void TnkPlugin::showInterstitialAd()

Description

prepareInterstitialAd()를 통하여 로딩된 전면광고를 화면에 띄웁니다. showInterstitialAd() 호출 후 5초 이내에 광고가 로딩되지 않으면 이후에 광고가 도착하더라도 화면에 나타나지 않습니다.