cocos2d-x iOS Tapjoy SDK 각종 광고 및 탭조이 마켓플레이스 연동

 탭조이 Connect까지 연동을 했다면 이제 탭조이에서 지원하는 여러 광고기능을 연동해야합니다. 풀스크린 광고, 배너 광고, 탭조이 마켓플레이스, 동영상 광고가 있습니다.

 먼저 Tapjoy.h 와 Tapjoy.mm 을 추가하시고 아래 나오는 소스를 확인하시면 되겠습니다. 샘플 수준이라 전부 + 함수로 만들었네요. 설명은 간단하게 주석으로 대체하겠습니다.

///< 기본적인 Tapjoy.h, mm 파일 내용. 추가 사항은 아래에서

#import "TapjoyConnect.h"

@interface Tapjoy : NSObject<
///< 배너 광고에 쓰이는 딜리게이트
TJCAdDelegate,
///< 동영상 캐쉬에 쓰이는 딜리게이트
TJCVideoAdDelegate
>

@end

///< mm


#import "Tapjoy.h"

#import "EAGLView.h"

@implementation Tapjoy


@end

  • 피처드 앱(Fullscreen Ads)
///< h 에 추가
+ (void) showFullScreenAd;
+ (void) getFullScreenAd:(NSNotification*)notifyObj;
+ (void) fullscreenAdClosed:(NSNotification*)notifyObj;

///< mm
+ (void) showFullScreenAd
{
    ///< 탭조이 서버에 풀스크린 광고 요청
    [TapjoyConnect getFullScreenAd];
    
    ///< FullScreen광고 통지
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(getFullScreenAd:) 
                                                 name:TJC_FULL_SCREEN_AD_RESPONSE_NOTIFICATION 
                                               object:nil];
    ///< 풀스크린 광고창 닫힘 통지
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(fullscreenAdClosed:)
                                                 name:TJC_VIEW_CLOSED_NOTIFICATION
                                               object:nil];
}


+ (void) getFullScreenAd:(NSNotification*)notifyObj
{
    ///< 풀스크린 광고 보기
    UIViewController* pRootViewController = (UIViewController*)[[[[[EAGLView sharedEGLView] window] subviews]objectAtIndex:0] nextResponder];
    [TapjoyConnect showFullScreenAdWithViewController:pRootViewController];
}

+ (void) fullscreenAdClosed:(NSNotification*)notifyObj
{
    NSLog(@"Fullscreen Ad closed");
}

///< AppController.mm

    ///< 풀스크린 광고 보기
    [Tapjoy showFullScreenAd];



 풀스크린 광고는 각 고유한 광고가 사용자에게 총 5회까지 보여질 수 있다고 합니다. 5회가 지나도 사용자가 광고 오퍼를 완수하지 않으면 해당 풀스크린 광고는 더이상 표출이 안된다네요. 당연히 오퍼를 완료해도 더이상 표출이 안되구요.

  • 배너 광고(Display Ads)
///< h에 추가
+ (void) showDisplayAd;

///< mm
+ (void) showDisplayAd
{
    [TapjoyConnect getDisplayAdWithDelegate:self];
    
}

///< 탭조이로부터 광고를 받는 함수. 인자로 넘어온 붙여준다.
+ (void) didReceiveAd:(TJCAdView *)adView
{
   NSLog(@"Tapjoy Display Ad Received");
    UIView* pUIView = (UIView*)adView;
    ///< position을 바꾸려면 frame 프로퍼티를 변경하면된다.
    //[pUIView frame] = CGRectMake(0, 50, 640, 100);
       
    [[EAGLView sharedEGLView] addSubview: pUIView];
}

+ (void) didFailWithMessage:(NSString *)msg
{
    NSLog(@"No Tapjoy Display Ads available");
}

///< 설정할 광고 사이즈를 리턴한다.
///< TapjoyConnect getDisplayAdWithDelegate 해주면 SDK 내부에서 호출된다
+ (NSString*) adContentSize
{
    ///< 탭조이가 지원하는 사이즈들
    return TJC_DISPLAY_AD_SIZE_640X100;
    //TJC_DISPLAY_AD_SIZE_768X90
    //TJC_DISPLAY_AD_SIZE_320X50;
}

///< 탭조이로부터 결과(didReceiveAd) SDK 내부에서 호출 된다.
+ (BOOL) shouldRefreshAd
{
    return YES;
}


///< AppController.mm

    ///< 배너 광고 보기
    [Tapjoy showDisplayAd];
 위에 것은 배너광고 첫 화면이고 이것을 터치하면 밑에 처럼 바뀌네요. 그런데 사라지진 않습니다.
[TapjoyConnect getDisplayAdView];
 이게 있던데 이걸 사용해서 얻어와서 superview로부터 없애줘야 하지 않을까 생각되네요.

  • 탭조이 마켓플레이스(Offerwall)
///< h

+ (void) showOfferwall;

///< mm

///< 탭조이 마켓플레이스 보기. TJC_VIEW_CLOSED_NOTIFICATION 처리해서 창이 닫힌 확인 가능
+ (void) showOfferwall
{
    UIViewController* pRootViewController = (UIViewController*)[[[[[EAGLView sharedEGLView] window] subviews]objectAtIndex:0] nextResponder];

    [TapjoyConnect showOffersWithViewController:pRootViewController];
}


///< AppController.mm

    ///< 탭조이 마켓플레이스 보기
    [Tapjoy showOfferwall];

  • 동영상 광고(Video Ads)
 동영상 광고를 연동하려면 먼저 탭조이 마켓플레이스가 연동이 되어있어야 합니다. 사실 탭조이 마켓플레이스만 연동해도 동영상 광고 연동은 일단락 된 것입니다. 무슨말인고하니, 디바이스가 와이파이로 연결되어 있으면 자동으로 마켓플레이스에서 동영상 표출이 되고 선택하면 재생이 잘 됩니다. 아래 추가하는 작업들은 스트리밍 동영상 대신 캐쉬된 동영상으로 처리할 때 필요한 추가작업입니다.

///< h


+ (void) enableCacheVideo;
+ (void) setCacheCount:(int) count;

///< mm

///< 비디오 재생을 캐쉬로 하는것을 활성화한다.
+ (void) enableCacheVideo
{
    [TapjoyConnect cacheVideosWithDelegate:self];
}
///< 기본적으로 5개의 동영상이 디바이스에 캐쉬되어 진다. 갯수 설정 가능
+ (void) setCacheCount:(int) count
{
    [TapjoyConnect setVideoCacheCount:count];
}
///< 영상이 재생 시작하면 호출되어지는 함수. 개발중인 App 애니메이션이나 사운드등을 pause 처리 해주면 .
+ (void) videoAdBegan
{
    NSLog(@"Video Ad Began Playing");
}
///< 영상이 끝나고 창이 닫힐 호출되어지는 함수. App 애니메이션이나 사운드등을 resume 처리 해주면 .
+ (void) videoAdClosed
{
    NSLog(@"Video Ad View Closed");
}

+ (void) videoAdError
{
    NSLog(@"Video Ad Error");
}




 탭조이 4가지 기능을 연동해봤습니다. 이제 빌드 후 실행해보시면 아마 제대로 작동을 안할텐데요, 테스트 하려면 탭조이 대쉬보드에 Test devices의 UDID를 입력해줘야 합니다. 이는 탭조이 Currency 관련 연동을 정리하면서 다른 포스팅에서 간단히 정리해보도록 하겠습니다.

댓글

이 블로그의 인기 게시물

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

goorm IDE에서 node.js 프로젝트로 Hello World Simple Server 만들어 띄워보기

애드센스 수익을 웨스턴 유니온으로 수표대신 현금으로 지급 받아보자.