나. EventHandler

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

TnkAdEventHandler 클래스의 모습은 아래와 같습니다. 아래의 메소드을 보시면 handleId 파라메터가 공통적으로 존재하고 있음을 알수 있습니다. handleId는 비동기 호출시 개발자가 임의로 지정한 값으로 다시 EventHandler로 전달됩니다. 이 handleId 값을 사용하시어 어떤 호출에대한 결과인지를 구별하실 수 있습니다.

TnkAdEventHandler

#define TNK_CLOSE_SIMPLE 0

#define TNK_CLOSE_CLICK 1

#define TNK_CLOSE_EXIT 2

#define TNK_FAIL_NO_AD -1

#define TNK_FAIL_NO_IMAGE -2

#define TNK_FAIL_TIMEOUT -3

#define TNK_FAIL_CANCELED -4

#define TNK_FAIL_SYSTEM -9

#define TNK_PUB_STAT_YES 1

class TnkAdEventHandler {

public:

virtual void onClose(int handleId, int type) {}

virtual void onFailure(int handleId, int errCode) {}

virtual void onLoad(int handleId) {}

virtual void onShow(int handleId) {}

virtual void onVideoCompleted(int handleId, int skipped) {} // for Video Ad only

virtual void onReturnQueryPoint(int handleId, int curPoint) {}

virtual void onReturnPurchaseItem(int handlerId, long curPoint, long seqId) {}

virtual void onReturnQueryPublishState(int handleId, int pubState) {}

virtual ~TnkAdEventHandler() {}

};

TnkAdEventHandler를 사용하기 위해서 다음과 같이 진행하세요.

  1. TnkAdEventHandler를 상속받아 클래스를 정의합니다. 기존의 cpp 클래스에 상속을 추가하셔도 됩니다.

  2. 정의한 클래스에 처리해야할 메소드들을 구현합니다. (모든 메소드를 구현하실 필요는 없습니다.)

  3. 구현한 클래스의 객체를 생성한 후 TnkAdPlugin.setEventHandler() 메소드를 사용하여 EventHandler 객체를 지정합니다.

  4. TnkAdPlugin의 메소드를 호출합니다. 이때 비동기 호출의 경우 handleId 값을 지정하셔야합니다.

  5. 비동기 호출의 결과는 설정한 TnkAdEventHandler 객체의 메소드를 통하여 전달되며 이때 호출시 지정하셨던 handleId 값이 같이 전달됩니다.

아래는 기존 cpp 클래스에 TnkAdEventHandler 상속을 추가한 예시입니다.

TnkAdEventHandler 구현 예시

// HelloWorldScene.h

class HelloWorld : public cocos2d::CCLayer, public TnkAdEventHandler

{

private:

// ...

public:

// add TnkAdEventHandler methods

virtual void onReturnPurchaseItem(int handlerId, long curPoint, long seqId);

virtual void onReturnQueryPublishState(int handlerId, int pubState);

virtual void onReturnQueryPoint(int handlerId, int curPoint);

};

// HelloWorldScene.cpp

void HelloWorld::onReturnQueryPoint(int handlerId, int curPoint) {

char buf[100];

sprintf(buf, "onReturnQueryPoint : curPoint = %d", curPoint);

CCMessageBox(buf, "Alert");

}

void HelloWorld::onReturnPurchaseItem(int handlerId, long curPoint, long seqId) {

char buf[100];

sprintf(buf, "onReturnPurchaseItem : curPoint = %ld, seqId = %ld", curPoint, seqId);

CCMessageBox(buf, "Alert");

}

void HelloWorld::onReturnQueryPublishState(int handlerId, int pubState) {

char buf[100];

sprintf(buf, "onReturnQueryPublishState : state = %d", pubState);

CCMessageBox(buf, "Alert");

}