cocos2d-x Android Google AdMob Integration

 cocos2d-x 안드로이드에 구글 애드몹 연동 작업을 정리해봅니다. 구글 개발자 사이트에 비교적 한글화가 이미 잘 되어 있네요. 그리고 저는 회사 계정으로 진행을 하기 때문에 이미 애드몹에 가입이 되어있고 App을 등록해서 광고ID를 받은 것으로 간주합니다. 이 부분은 추후 따로 정리를 해봐야겠네요.

  • Google AdMob Ads SDK 6.2.1 기반
 먼저 Google AdMob Ads SDK Download하고 적당한 위치에 압축을 풀어준 후 GoogleAdMobAdsSdk-6.2.1.jar 파일을 개발중인 프로젝트에 추가시켜 줍니다.

 다음으로 AndroidManifest.xml을 수정해야 합니다.

<activity android:configchanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:name="com.google.ads.AdActivity"></activity>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

 AdActivity와 2가지 권한이 없다면 추가해줍니다. 이제 Java 소스 수정입니다. 설명은 주석으로 대체합니다.

public class MyGame extends Cocos2dxActivity{
...
 private AdView adView;
...
 protected void onCreate(Bundle savedInstanceState){
...
...

  // 3번째 인자는 AdMob 사이트에서 만든 광고 ID
  adView = new AdView( this, AdSize.BANNER, "xxxxxxxxxxxxx");
 
  LinearLayout layout = new LinearLayout(this);
  // 광고 위치 조정
  layout.setPadding(100, 100, 0, 0);
  layout.addView(adView);
  framelayout.addView(layout);
 
  AdRequest adRequest = new AdRequest();
  // 테스트시 무효 광고 클릭 노출이 발생하지 않도록 하려면  addTestDevice에 기기id 입력.
  // 기기id 디바이스로 테스트시 광고 요청하면 logcat에 나옴.
  //adRequest.addTestDevice("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
  adView.loadAd(adRequest);
...
}


@Override
public void onDestroy() {
    adView.destroy();
    super.onDestroy();
}

 이제 빌드 후 실행하면 위와같이 100, 100 위치에 애드몹이 위치해 있는 것을 볼 수 있습니다. cocos2d-x는 왼쪽 밑이 0,0이지만 안드로이드 UI는 왼쪽 위가 영점이죠.

 저는 AdMob연동을 Java 소스로 구현을 했는데요, 보통은 안드로이드 작업시에 많이들 쓰는 xml로 레이아웃을 구성해서 합니다. 뭐, 이미 안드로이드 개발을 쉽게 다루시는 분들이라면 상관이 없을텐데 그래도 일단 xml로 구성해서 AdMob 연동하는 링크를 남겨봅니다.

http://cocos2d-x.org/boards/6/topics/13233
http://www.cocos2d-x.org/boards/6/topics/16565


AdView를 만들때 지원하는 사이즈가 몇개 있습니다. 참고하시라고 위치 0, 0일때 배너 사이즈 타입별 스샷을 남겨봅니다.

AdSize.SMART_BANNER

AdSize.BANNER( 320x50 )

AdSize.IAB_MRECT( 300x250 )

AdSize.IAB_BANNER( 468x60 )

 추가로 IAB_LEADERBOARD( 728x90 ), IAB_WIDE_SKYSCRAPER 이 더 있지만 폰에서 테스트를 해서 그런지 아래와 같은 로그와 함께 광고 출력이 되지는 않았습니다.

Invalid admob request error: Ad size will not fit on screen
onFailedToReceiveAd(Invalid Ad request.)

 이상한 것은 제 폰 해상도가 800x480 이고 setDesignResolutionSize(960, 640) 으로 되어있는데도 불구하고, 광고들 사이즈가 2배 뿔린 것처럼 크게 나오고 있다는 것이죠. 마치 디바이스 해상도가 480x320 인것마냥.

댓글

이 블로그의 인기 게시물

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

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

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