iDev/Cocos2D

Apportable Android에 Admob 적용하기

KraZYeom 2014. 3. 15. 15:20
반응형

Apportable을 사용해서 cocos2d-iPhone 앱을 안드로이드 앱으로 빌드하는 과정에서 가장 아쉬운게 AdMob 광고였다. 아무리 구글링을 해봐도 제대로된 해답은 없고, Starter Kit에서는 지원이 안되니 BridgeKit을 사용해서 직접 Android Java를 코딩해서 직접 붙이는 수 밖에 없었다. 


Apportable 에서 직접 AdNetworkTests http://docs.apportable.com/sample-apps.html#adnetworktests 광고 관련 셈플 프로젝트가 있는데 문구에는 Indie 버전만 지원한다고 나온다. 그래서 bulid를 해도 AdMob은 지원을 안하니 계속해서 에러가 난다. 


그러다가 공식 문서에서 발견한 한 줄기 빛과 같은 문구. 


Revmob and Admob

Included again in full SDK

모든 SDK에서 다시 Admob을 지원한다는 것이다. 그런데 계속해서 build를 해도 에러가 난다. 


apportable --version을 확인하니 1.1.03 


apportable update를 해도 계속해서 1.1.03 이다. 지우고 설치를 해도 1.1.03 이다. 뭔가 컴맹이 된 기분. 


해결책은 아주 간단하다. http://www.apportable.com/account 에 가서 SDK Version을 release_1.1.06 으로 변경한다. 

1.1.05 이상에서만 starter kit 에서도 Admob을 지원하니. 꼭 1.1.06을 선택하도록 하자. 


그리고 AdNetworkTests 에서 가저온 샘플 코드를 자신에 환경에 맞게 살짝 손만 본다. 기존 코드는 UIKit 기준으로 되어 있어서 cocos2d에 맞게만 변경을 하였다. 


AppDelegate.h

#ifdef ANDROID

#import "GADBannerView.h"

#import "GADInterstitial.h"

#else


#ifdef ANDROID

@interface AppDelegate : CCAppDelegate <GADInterstitialDelegate> {

  GADBannerView *mBannerView;

  GADInterstitial *mInterstitial;

}


@end


#else


AppDelegate.m

// 광고 생성 초기.

- (void)initADBanner {

  CGSize winsize = [[UIScreen mainScreen] bounds].size;


#ifdef ANDROID

  mBannerView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];

  #ifdef APPORTABLE

  mBannerView.adUnitID = @"APPID";

  #endif // apportable

  mBannerView.rootViewController = self.window.rootViewController;

  CGRect frame = mBannerView.frame;

  mBannerView.frame = CGRectMake(winsize.height/2 - frame.size.width / 2, winsize.width - 50, 320, 50);


  [self.window.rootViewController.view addSubview:mBannerView];

  GADRequest *request = [GADRequest request];

  request.testDevices = [NSArray arrayWithObjects:GAD_SIMULATOR_ID, nil];

  [mBannerView loadRequest:request];

  

  [self loadInterstitial];


#else

  [self initADBanneriAd];

  [self initADBannergAd];

#endif

}



#pragma mark - Private


- (void)loadInterstitial

{

  [GADRequest request];

}


- (void)reloadInterstitial

{

  mInterstitial = nil;

  [self loadInterstitial];

}


#pragma mark - MPIntersitialAdControllerDelegate


- (void)interstitial:(GADInterstitial *)interstitial didFailToReceiveAdWithError:(GADRequestError *)error {

  NSLog(@"**** MoPub Interstitial load failed.");

}


- (void)interstitialDidReceiveAd:(GADInterstitial *)interstitial {

  NSLog(@"**** MoPub Interstitial did load.");

}


- (void)interstitialWillPresentScreen:(GADInterstitial *)interstitial {

  

}


- (void)interstitialDidDismissScreen:(GADInterstitial *)interstitial {

  [self reloadInterstitial];

}


#endif



끗!


반응형