Blog

Apportable Android에 Admob 적용하기

March 15, 2014

Apportable Android에 Admob 적용하기

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

끗!

저작자 표시
비영리