안드로이드 앱에 광고를 넣어보자.
광고를 넣으려면 AdMob 사이트에 광고를 넣을 앱이나 사이트를 등록해야 된다.
AdMob.com에서 로그인 한 후 첫 페이지에서 사이트 및 앱 탭을 선택한다.
음…아직 등록된 앱이 하나도 없네. 새로 추가해야지. 사이트 및 앱 추가를 선택한다.
사이트 및 앱 유형을 선택한다. 여기서는 안드로이드 앱에 넣을 거니까 안드로이드 앱을 선택하면 된다.
안드로이드 앱에 체크가 되면서 아래쪽으로 정보를 입력하는 항목이 펼쳐진다.
앱 이름(앱에 지정한 앱 이름과 동일해야 됨)과 패키지 URL, 카테고리를 선택하고 앱에 대한 설명을 간략하게 적는다. 앱을 마켓에 등록한 상태가 아니라면 안드로이드 패키지 URL에 ‘http://’만 넣고, 앱을 등록한 다음에 적절한 URL로 변경한다.
안드로이드용 AdMob SDK를 다운로드 할 수 있는 링크가 나왔다. 링크를 클릭해서 SDK를 다운받는다.
이렇게 해서 AdMob 사이트에서 해야 되는 것은 다 했다.
다시 사이트 및 앱 탭을 클릭하면 현재의 상태가 표시된다.
이제 앱에 광고를 넣어서 내 광고 수익을 올리려면 앱과 이 계정을 연결할 AdMob의 ID를 찾아야 된다. 앱이 표시된 부분으로 마우스를 가져가면 보고서, 설정관리 등이 표시되는데, 여기서 설정관리를 클릭한다.
그러면 게시자의 ID가 표시된다. 이 게시자 ID를 앱에 넣어야 광고가 표시되거나 클릭했을 때 게시자의 계정으로 광고료가 산정된다. 이 ID를 다르게 넣으면 광고가 나오지 않거나 엉뚱한 사람의 광고 계정으로 광고료가 들어갈 수 있으니 입력할 때 정확하게 입력해야 된다.
먼저 처리할 것은 다 끝났고, 이클립스에서 광고 출력을 위한 처리만 하면 된다.
우선 admob을 사용할 수 있게 라이브러리를 등록한다. 메뉴의 Project -> Properties를 선택하면 아래와 같은 창이 나온다. 여기에서 왼쪽 창의 ‘Java Build Path’를 선택하고, 탭에서 ‘Libraries’를 누른 다음, 오른쪽 버튼 중 ‘Add JARs…’를 누른다.
GoogleAdMobAdsSdk-x.y.z.jar을 선택하고 ‘OK’ 버튼을 누른다. 앞의 x.y.z에는 다운받은 라이브러리의 버전 번호가 들어간다.
이제 화면의 가운데처럼 라이브러리가 추가되었다. 마지막으로 ‘OK’를 눌러 설정을 마친다.
다음으로는 Manifest 파일을 열고 권한을 추가한다.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
안드로이드 SDK 버전을 14 이상(안드로이드 4.0 이상)으로 설정한다. 최소 SDK 버전은 8(안드로이드 2.2)으로 한다. 여기서 4.0 이상으로 맞추어도 2.2 이상의 기기에서는 이상없이 동작한다.
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
아울러 프로젝트의 안드로이드 SDK 버전을 4.0 이상(3.0 이상이면 되는 것 같음)으로 맞춰야 에러없이 컴파일된다. 그렇지 않으면 아래의 액티비티 추가한 것이 에러가 나고, 에러나는 항목(screenSize, smallestScreenSize)을 삭제해도 실행한 다음에 앱에 광고가 제대로 출력되지 않고 이 항목이 있어야 광고가 출력된다고 하면서 버티기로 들어간다.
다음으로 액티비티를 하나 추가한다. 실제 액티비티가 아니고 커스텀뷰를 만드는 코드다.
<activity android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|
screenLayout|uiMode|screenSize|smallestScreenSize"
/>
이제 실제로 광고가 출력될 액티비티의 레이아웃에 광고를 추가한다.
<com.google.ads.AdView
android:id="@+id/ADMobAD"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
ads:refreshInterval="60"
ads:adSize="BANNER"
ads:adUnitId="a14fxxxxxxxxxxx" <!-- a14xxxxxxx 부분에 저 위에서 확인한 앱의 ID를 입력한다. -->
ads:loadAdOnCreate="true"
/>
루트 레이아웃에 아래의 한 줄을 추가한다.
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
루트 레이아웃이 다음과 같이 된다.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:id="@+id/layoutMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
액티비티 코드의 onCreate()에 아래의 코드를 추가한다.
adView = (AdView)this.findViewById(R.id.ADMobAD);
onDestroy()에 아래 코드를 추가한다.
adView.destroy(); // adView 객체 파괴.
onPause()에 아래 코드를 추가한다(액티비티가 onPause 메시지를 받으면 광고 로딩 정지).
adView.stopLoading(); // 광고 로딩 중지
onResume()에 아래 코드를 추가한다(액티비티가 onResume 메시지를 받으면 광고를 로딩).
AdRequest request = new AdRequest();
adView.loadAd(request); // 광고 로딩.
이 코드는 아래에서 설명 할 테스트 기기를 등록하면 다음과 같이 바뀐다.
AdRequest request = new AdRequest();
request.addTestDevice(AdRequest.TEST_EMULATOR); // 에뮬레이터를 애드몹 시험기기로 등록
request.addTestDevice("7A55xxxxxxxxxxxxxxxxxxxxxxxx"); // 아래에서 설명하는 방법으로 찾아낸 내 기기 ID를 애드몹 시험기기로 등록
adView.loadAd(request); // 광고 로딩.
마지막으로 AdMob의 속성을 정의하기 위해 다음과 같이 한다.
리소스의 values 폴더에 attrs.xml 파일이 없으면 다음과 같이 새로 만들고, 이미 있으면 위의 2줄과 끝 줄을 뺀 나머지를 attrs.xml 파일에 추가한다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="com.google.ads.AdView">
<attr name="adUnitId" format="string"/>
<attr name="backgroundColor" format="color" />
<attr name="primaryTextColor" format="color" />
<attr name="secondaryTextColor" format="color" />
<attr name="keywords" format="string" />
<attr name="refreshInterval" format="integer" />
</declare-styleable>
</resources>
이상으로 안드로이드 앱에 AdMob 광고 넣기는 끝
AdMob는 돈이 관련된 것이라서 부정적인 방법으로 페이지뷰나 클릭이 늘어나는 것을 방지하기 위해서 광고 시험은 테스트 기기로 해야 한다. 테스트 기기를 등록하려면 기기의 해시 코드를 알아야 되며, 앱에서 광고가 정상적으로 출력될 때 로그캣을 보면 해시 코드를 볼 수 있다.
이클립스에 로그캣 창이 떠있지 않으면, 이클립스의 Window -> Show View -> LogCat를 선택해서 로그캣창을 띄운다.
로그캣 창의 오른쪽에 있는 <Display Saved Filters View>를 클릭하고, 왼쪽 창에서 ‘+’를 눌러 필터 설정 창을 연다.
필터 설정 창에서 Filter Name에는 아무 이름이나 넣고, by Log tag에 ‘Ads’를 넣는다.
위에서 설정한 필터를 클릭하면 로그캣 창에는 TAG가 Ads인 로그만 표시되며, 그 중에 보면 ‘To get test ads on this device, call adRequest.addTestDevice(“7A55xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”);’라고 된 항목이 있는데 그 줄의 인용부호 안에 있는 32자리 16진 숫자가 해당 기기의 해시 코드이다.
이 해시 코드를 광고를 로딩하는 부분에 addTestDevice 메서드로 아래와 같이 추가한다(에뮬레이터도 시험장비로 등록).
위와 같이 처리해서 안드로이드 앱에 AdMob 광고 넣기가 모두 끝났다.
포스팅 잘보았습니다. 보면서 따라해 보고 있는대 잘되지 않내요 혹시 전채소스를 한번 볼수 없을까요?
죄송합니다. ㅎㅎㅎ::
어떤 부분이 잘 안되는지 알려주시면 다시 확인해보고 알려드리겠습니다.
아하! 어떻게 하다보니 성공하였습니다.;; ㅎㅎ
답글 감사합니다.
아! 그리고 개시된 글은 테스트 용도인것 같으대 상용화 할때도 이렇게 사용하는 건가요 아니면 차이가 있는건가요???
에드몹 sdk는 전부 영어로 되어있어서 보기가 힘들고 이해도 전혀 가지 않아서 말입니다.
이대로 사용하면 되는겁니다.
앱 만드는데 위에 있는대로 애드몹 코드를 넣고 배포하는거죠
그러면 앱설치한 사람이 앱을 실행할 때마다 광고가 나옵니다.
오옷!!! 감사합니다.
듸어 성공하였습니다 ㅜㅜ
바쁘신 와중에 이렇게 답글을 남겨주셔서 갑사합니다.