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
끗!
'iDev > Cocos2D' 카테고리의 다른 글
cocos2d v3 RC3, Apportable 안드로이드 Back Button 구현하기 (0) | 2014.03.19 |
---|---|
cocos2d mac에서 현재 윈도우 화면 캡쳐하기 (0) | 2014.03.15 |
cocos2d, Apportable Antialias 버그 (0) | 2014.03.14 |
[cocos2d] 소스 하나로 iOS, Mac, Android로 개발하기 (0) | 2014.03.09 |
다윤이와 함께 게임 만들기 - 게임 개발 중 (0) | 2014.03.07 |