본문 바로가기
개발일기/부산버스

앱에 광고 붙이기 - 환경 설정

by 유주원 2015. 2. 12.

앱 출시한지 이제 1년이 다 되어 가길래 이제 슬슬 나도 수익을 내볼까 하며.. 앱에 광고 붙이는 방법들을 찾기 시작했다.


애드핏(구 아담), 애드포스트(네이버), 애드몹(구글), 애드립 등등...


'모가 이렇게 많지??? 이 중에 모가 수익이 제일 많이 날까.. 몰 붙여야 하지??'


광고를 처음 붙이는 사람이라면 이런 고민은 한번쯤은 다 해봤을 것이다.


광고를 붙인 경험자로써 내린 결론은 애드립이다.


위의 광고 대행사들과 애드립의 차이에 대해 약간 설명을 하자면,

위의 광고 대행사들은 자기네가 가지고 있는 광고가 매체에 노출이 되고 클릭이 되면 돈을 주는 방식으로 되어 있다.

(물론 애드립도 자체 광고가 있음)


그런데 이 광고라는게 무제한으로 제공하는 것이 아니라, 효율을 따지거나 어떠한 이유 등으로 인해 광고 대행사에서 

중간에 광고를 송출 안할 수도 있다.


예를 들어 당신이 만약에 애드핏 광고를 붙였다고 생각해보라. 당신은 분명 24시간 노출을 예상하며 그에 따른 수익을

기대할 것이다. 하지만 만약 애드핏에서 24시간 중 12시간만 광고 노출을 했다면 어떠할 것인가?

나머지 12시간은 그냥 광고 없는 뷰로 쓸모없이 영역만 차지하고 있는 것이다.


이런 불상사를 막기 위해 애드립에서는 광고 스케쥴이란 기능을 도입하고 있다. 어느 한 대행사에서 광고가 노출되지 

않을 경우 그 다음 대행사 광고로 대체하는 역할을 애드립이란 플랫폼에서 지원하고 있는 것이다.


개발자가 따로 '광고가 없을 시 다른 광고사의 광고를 노출 해라' 라는 기능을 코드로 구현하지 않아도 되는 것이다.


그럼 이제부터 애드립 연동 방법에 대해 알아보자.


가장 중요한 회원가입.... 회원 가입을 해야한다. 만약에 내가 애드립 플랫폼에 애드핏, 애드포스트, 애드몹을 스케쥴 

걸고 싶다라고 한다면, 애드립은 물론 애드핏, 애드포스트, 애드몹에 대해 일일히 회원가입을 한 후 매체를 등록하여

각 매체에 해당하는 키를 발급받아야 한다.


나중에 이 키를 코드에 집어 넣음으로써 어느 매체에서 클릭이 왔는지를 판가름 할 수 있기 때문에 중요한 요소라 

할 수 있다.


회원 가입을 한 후 애드립 sdk를 다운 받은 후 압축을 풀면 애드립 샘플 코드를 볼 수 있을 것이다.


우선 애드립 sdk로부터 받은 애드립 library를 gradle project에 추가한다.

(이후부터는 gradle 사용을 기반으로 설명할 예정입니다.)

또한 구글 정책 변경으로 인해, google-play library도 필요하게 됨에 따라 google-play library도 gradle dependency에

추가한다.


추가하고 싶은 매체의 라이브러리도 gradle에 추가한다.

(나 같은 경우에는 adam과 naver, admop을 추가하였다. admop의 경우는 google-play library에서 함께 제공되기 때문에

따로 라이브러리를 추가할 필요는 없다.)


애드립이 센스 있게 자기네 sdk의 libs 폴더 안에 각 매체사 라이브러리들을 포함해 놓았다.

일일이 각 매체 홈페이지에 들어가서 라이브러리를 다운받을 필요가 없다.


dependencies{

       compile 'com.google.android.gms:play-services:6.5.87'          # 구글 플레이 라이브러리 (애드몹도 포함되어 있음)

       compile files('libs/adlibr.4.0.1.6.jar')                                # 애드립 라이브러리

       compile filles('libs/AdamPublisherSDK-2.3.4.jar')                  # 아담(애드핏) 라이브러리

       compile files('libs/nbpmobilead_1.3.0.jar')                          # 애드포스트(네이버) 라이브러리



라이브러리를 추가했다면 이제는 AndroidManifest.xml에 권한을 추가하고 필요한 Activity에 대한 정의를 내려야 한다.


# 권한 정의

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

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

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

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

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


# activity 추가

<application

   ...

   <!-- 네이버 애드포스트 광고 노출을 위한 선언 -->

   <activity android:name="com.nbpcorp.mobilead.sdk.MobileAdBrowserActivity" />

   <!-- 애드몹 광고 노출을 위한 선언 -->

   <activity android:name="com.google.android.gms.ads.AdActivity"

             android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />

   <!-- 애드립 사용을 위한 필요한 선언 -->

   <activity android:name="com.mocoplex.adlib.AdlibDialogActivity"

             android:theme="@android:style/Theme.Translucent"

             android:configChanges="orientation|keyboard|keyboardHidden" />

   <activity android:name="com.mocoplex.adlib.AdlibWebBrowserActivity"

             android:configChanges="orientation|keyboard|keyboardHidden" />

   <activity android:name="com.mocoplex.adlib.AdlibVideoPlayer"

             android:theme="@android:style/Theme.NoTitleBar"

             android:configChanges="orientation|keyboard|keyboardHidden" />

   <!-- 구글 플레이 광고 ID 사용을 위한 설정 -->

   <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

</application>


Manifest에 대한 설정이 끝났다면 이제 proguard에 대한 설정을 진행한다.

proguard는 릴리즈 모드로 빌드 시에 사용되지 않는 코드를 지워주거나, 난독화 등을 진행할 수 있도록 도와주는 역할을 한다.


-keep class net.daum.adam.publisher.* { public *; }


-keep class * extends java.util.ListResourceBundle {

    protected Object[][] getContents();

}


-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {

   public static final *** NULL;

}


-keepnames @com.google.android.gms.common.annotation.KeepName class *


-keepclassmembernames class * {

   @com.google.android.gms.common.annotation.KeepName *;

}


-keepnames class * implements android.os.Parcelable {

   public static final ** CREATOR;

}


이제 애드립 사용을 위한 기본 환경 설정을 끝냈다.

다음 포스팅에는 실제 코드상에서 어떻게 적용해야 하는지에 대해 설명할 것이다.


참고로 위의 설정은 아담,애드포스트,애드몹에 대한 띠배너 광고만을 다룬 환경 설정이며, 

(실제로 붙여본 게 이 세 가지라서...) 

이 외의 설정을 하고자 한다면 추가로 설정 정보가 요청될 것이다.


추가로 요청되는 설정 정보는 애드립 메뉴얼을 살펴보거나 애드립 샘플 파일을 참고하면 될 것 같다.