Android SDK User Guide v4
애드립앱관리및 mediation 개요 실제프로젝트환경에 SDK 적용을위한문서입니다. 애드립을통해실제사용할플랫폼은프로젝트에서선택적으로포함하여최종바이너리크기를줄일수있습니다. 실제테스트프로젝트를컴파일하기위하여 각플랫폼사이트에서발급받은 APP - ID 및각 OS 에맞는최신 SDK 가별도로필요합니다. 기본적으로테스트프로젝트는각플랫폼의 jar 파일만새로링크하면동작하도록제작되었으며 실제플랫폼의 SDK 작동방식이변하지않는한 test.adlib.project.ads 안의내용을수정할필요는없습니다. ( 실제발급받은광고플랫폼 ID 적용부분은수정해야합니다.) 2
컴파일을위한준비 #1 각플랫폼의가입과 SDK 다운로드를개별적으로진행합니다. adlibrtestproject / libs 폴더를열어각플랫폼의 jar 파일을아래와같이모두복사해넣습니다. 기타플랫폼 jar 추가 3
컴파일을위한준비 #2 프로젝트를열어아래와같이속성을확인합니다. - 애드립 SDK v4 버전부터는구글광고 ID 가적용되었습니다. - 왼쪽화면과같이 Library 에 Add 버튼을통해 google-play-services_lib 가포함되어야합니다. - 만약 Add 를눌러도조회가되지않는다면 [ 안드로이드 SDK 경로 ]/extras/google/google_play_services/ libproject/google-play-services_lib 을임포트하여이클립스내의 Workspace 로불러옵니다. Android 탭에서사용할 Android SDK 버전을체크합니다. 애드립 SDK 컴파일을위해 API Level 17 이상의 Android SDK 를필요로합니다. 4
프로젝트자세히 test.adlib.project 패키지는테스트를위한 Activity 가위치하며 test.adlib.project.ads 패키지는각광고플랫폼의실제구현부입니다. test.adlib.project.ads 안에서 jar 파일과마찬가지로 실제사용할클래스만선택하여최종파일크기를줄일수있습니다. 기타일반플랫폼구현부 5
AndroidManifest.xml #1 빌드및권한설정 - 아래의권한을추가하지않을경우 Exception 이발생합니다. - 애드립 SDK 최소버전은 9 입니다. (Android 2.3 이상 ) - 타플랫폼의최소버전이애드립보다높다면변경하시기바랍니다. <uses-sdk android:minsdkversion= 9 /> <--. --> <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.access_wifi_state" /> <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"/> <--. --> <-- > < -. (.) - > <uses-permission android:name="android.permission.access_wifi_state" /> <uses-permission android:name="android.permission.read_phone_state" /> <uses-permission android:name="android.permission.access_network_state" /> 다음페이지에추가설정부분이있으니, 확인후꼭적용하시기바랍니다. 6
AndroidManifest.xml #2 <application android:icon="@drawable/icon" android:label="@string/app_name" > <-- ID. --> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> 애드립 SDK 3.9.8 버전부터구글광고 ID 사용을위해 추가되었습니다. ( 구글플레이정책 ) <--. --> <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" /> <--. --> </application> 애드립의기능사용을위해서 반드시추가되어야합니다. 그밖에실제프로젝트에연동을위하여기본적으로어플리케이션구동에필요한권한외에위의권한을별도로추가해주세요. 광고플랫폼별필요한권한들은각플랫폼의 SDK 문서를참조해주세요. 7
실제프로젝트연동 #1 보다자세한내용은테스트프로젝트의 AdlibTestProjectActivity.java 파일을참조해주세요. Adlib 을연동하기위해서실제 Activity 구현부를아래와같이수정합니다. public class AdlibTestProjectActivity extends AdlibActivity 처음으로실행되는 Activity 에서광고스케줄링정보를받아올수있도록아래와같이먼저호출합니다. protected void initads() //. ( activity.) // subview. (.) // Activity AdlibManager. (AdlibTestProjectActivity4.java) //. AdlibConfig.getInstance().bindPlatform("ADAM","test.adlib.project.ads.SubAdlibAdViewAdam"); AdlibConfig.getInstance().bindPlatform("ADMOB","test.adlib.project.ads.SubAdlibAdViewAdmob"); AdlibConfig.getInstance().bindPlatform("CAULY","test.adlib.project.ads.SubAdlibAdViewCauly"); AdlibConfig.getInstance().bindPlatform("TAD","test.adlib.project.ads.SubAdlibAdViewTAD"); AdlibConfig.getInstance().bindPlatform("NAVER","test.adlib.project.ads.SubAdlibAdViewNaverAdPost"); AdlibConfig.getInstance().bindPlatform("SHALLWEAD","test.adlib.project.ads.SubAdlibAdViewShallWeAd"); AdlibConfig.getInstance().bindPlatform("INMOBI","test.adlib.project.ads.SubAdlibAdViewInmobi"); AdlibConfig.getInstance().bindPlatform("MMEDIA","test.adlib.project.ads.SubAdlibAdViewMMedia"); AdlibConfig.getInstance().bindPlatform("MOBCLIX","test.adlib.project.ads.SubAdlibAdViewMobclix"); AdlibConfig.getInstance().bindPlatform("UPLUSAD","test.adlib.project.ads.SubAdlibAdViewUPlusAD"); AdlibConfig.getInstance().bindPlatform("MEZZO","test.adlib.project.ads.SubAdlibAdViewMezzo"); AdlibConfig.getInstance().bindPlatform("AMAZON","test.adlib.project.ads.SubAdlibAdViewAmazon"); AdlibConfig.getInstance().bindPlatform("ADHUB","test.adlib.project.ads.SubAdlibAdViewAdHub"); AdlibConfig.getInstance().bindPlatform("MEDIBAAD","test.adlib.project.ads.SubAdlibAdViewMedibaAd"); // JAR test.adlib.project.ads. // SMART* dialog / setadlibkey activity activity activity app. // adlibr.com api. // https://sec.adlibr.com/admin/dashboard.jsp AdlibConfig.getInstance().setAdlibKey( ADLIB API KEY ); 8
실제프로젝트연동 #1 자세히 1. 실제구현된광고플랫폼뷰를프로젝트에연결합니다. AdlibConfig.getInstance().bindPlatform("INMOBI","test.adlib.project.ads.SubAdlibAdViewInmobi"); 위패키지경로는실제구현된경로로수정이되어야하며테스트프로젝트에서는 test.adlib.project.ads 경로아래에구현되어위와같이연결되었습니다. 2. Adlib 에서발급받은 API KEY 를설정합니다. AdlibConfig.getInstance().setAdlibKey("ADLIB API KEY"); API Key 는 https://sec.adlibr.com/admin/dashboard.jsp 에서발급및확인이가능합니다. 노출, 클릭관련로그는홈페이지관리페이지에서실시간으로확인가능합니다. 3. 애드립을이용하여클라이언트버전관리를할수있습니다. setversioncheckinglistner(new AdlibVersionCheckingListener()); 서버에서클라이언트버전을관리하여사용자들에게클라이언트버전업을유도할수있습니다. ( 자세한내용은샘플프로젝트를참조하세요.) 클라이언트최신버전은홈페이지 -> 설정메뉴를통해설정가능합니다. deprecated : SMART* dialog 를통해보다손쉽게앱업데이트를유도할수있습니다. 9
실제프로젝트연동 #2 애드립을연동하기위해아래와같이구현합니다. setcontentview(r.layout.main); initads(); // adview. this.setadscontainer(r.id.ads); layout / main.xml 은아래와같이구현되었습니다. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <-- adlib adview --> <com.mocoplex.adlib.adlibadviewcontainer android:layout_width="fill_parent" isdefaultbanner : 초기광고로딩전에기본하우스배너를보여줄지말지여부. android:layout_height="wrap_content" true 이면애드립배너혹은대쉬보드에서설정하신사용자배너가초기로딩전에 android:id="@+id/ads" 보여집니다. ( 기본값은 true) isdefaultbanner="true" /> </LinearLayout> 위와같이 xml 에서 com.mocoplex.adlib.adlibadviewcontainer 로구현된 id / ads 를 this.setadscontainer(r.id.ads); 최종적으로 Activity 에연결합니다. 10
실제프로젝트연동 # 두번째 Activity 보다자세한내용은테스트프로젝트의 AdlibTestProjectActivity2.java 파일을참조해주세요. public class AdlibTestProjectActivity2 extends AdlibActivity /** Called when the activity is first created. */ @Override public void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); setcontentview(r.layout.main2); this.setadscontainer(r.id.ads); 이미전역적인설정을첫번째 Activity 에서수행하였기때문에두번째이후의 Activity 에서는 위와같이광고뷰를 bind 하기만하면됩니다. 11
실제프로젝트연동 # 광고 View 동적생성 보다자세한내용은테스트프로젝트의 AdlibTestProjectActivity3.java 파일을참조해주세요. public class AdlibTestProjectActivity3 extends AdlibActivity 광고뷰를 xml 이아닌아래와같이동적으로코드상에서생성및연결이가능합니다. // adview. avc = new com.mocoplex.adlib.adlibadviewcontainer(adlibtestprojectactivity3.this); ViewGroup vg = (ViewGroup)findViewById(R.id.maincontainer); vg.addview(avc); // adview. bindadscontainer(avc); 초기광고로딩전에하우스배너를보여줄지말지에대한설정을하고싶으시면, avc = new com.mocoplex.adlib.adlibadviewcontainer(adlibtestprojectactivity3.this, true); 위와같이 AdlibAdViewContainer 를생성할때, boolean 값을지정하면됩니다. true 이면애드립배너혹은대쉬보드에서설정하신사용자배너가초기로딩전에보여집니다. boolean 을지정하지않으면기본으로하우스배너가노출됩니다. 12
실제프로젝트연동 #3 실제광고플랫폼의뷰를포함하는패키지이며 SubAdlibAdViewCore 클래스를상속받아제작됩니다. public void query() 스케줄러에의해위의함수가호출되며광고를수신한경우 public void gotad() 가호출되며위의함수호출로실제로 AdlibAdViewContainer 를통해화면에보여지게됩니다. 위의패키지명은필요에의해임의의프로젝트경로로변환이가능하며 변환된경로는 AdlibConfig.getInstance().bindPlatform("INMOBI","test.adlib.project.ads.SubAdlibAdViewInmobi"); 를통해실제경로로변경해야합니다. 13
실제프로젝트연동 #4 테스트프로젝트의 test.adlib.project.ads 패키지안에는제휴및일반플랫폼의 view 가구현되어있습니다. 기본적인모든구현은이미완성되어있으며실제각플랫폼구현부에서의 ID 부분만실제발급받은 ID 로교체하여사용합니다. AndroidManifest.xml 에 ID 를추가해야하는경우도있습니다. ( 각플랫폼의 SDK 문서참조 ) 주의 1) Proguard를이용하여암호화하는경우 proguard configuration 파일수정이필요합니다. 자세한구현내용은테스트프로젝트의 proguard.cfg 파일 또는 https://github.com/mocoplex/adlibr-sdk-android/blob/master/adlibrtestproject/proguard.cfg 위주소를참고해주세요. 2) 애드립은내부스케줄링정보를저장하기위해 document 폴더안에캐쉬데이터를저장합니다. DocumentPath/Adlib-data/ 경로에캐쉬데이터를저장하므로해당폴더를삭제하지말아주세요. 14
AdlibActivity public class AdlibActivity extends Activity private AdlibManager _amanager; protected void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); 애드립은기본적으로 Activity 를상속받아 각 status 별최적화를위한별도작업을처리하게됩니다. 기본 Activity 에서의애드립연동은 AdlibActivity 소스를참고하여구현가능합니다. _amanager = new AdlibManager(); _amanager.oncreate(this); protected void onresume() _amanager.onresume(this); super.onresume(); protected void onpause() _amanager.onpause(); super.onpause(); protected void ondestroy() _amanager.ondestroy(this); super.ondestroy(); public void setadscontainer(int rid) _amanager.setadscontainer(rid); public void bindadscontainer(adlibadviewcontainer a) _amanager.bindadscontainer(a); public void loadinterstitialad() _amanager.loadinterstitialad(this); public void setversioncheckinglistner(adlibversioncheckinglistener l) _amanager.setversioncheckinglistner(l); public void destroyadscontainer() _amanager.destroyadscontainer(); AdlibTestProjectActivity4.java 파일을참조해주세요. 15
애드립팝배너 - 그림과같은형태의배너가노출된후일정시간이지나면사라집니다. - 아래의메소드를호출하여애드립팝배너를보여줄수있습니다. (AdlibActivity) // setadlibpopframecolor(color.dkgray); // (BTN_WHITE, BTN_BLACK 2 ) setadlibpopclosebuttonstyle(adlibpop.btn_white); // in, out (ANIMATION_SLIDE, ANIMATION_NONE 2 ) setadlibpopanimationtype(adlibpop.animation_slide, AdlibPop.ANIMATION_SLIDE); // (int align, int padding(dp )) // ALIGN_LEFT, ALIGN_TOP, ALIGN_RIGHT, ALIGN_BOTTOM 4 showadlibpop(adlibpop.align_bottom, 50); (AdlibManager 생성시 ) _amanager.setadlibpopframecolor(color.dkgray); _amanager.setadlibpopclosebuttonstyle(adlibpop.btn_white); _amanager.setadlibpopanimationtype(adlibpop.animation_slide, AdlibPop.ANIMATION_SLIDE); _amanager.showadlibpop(this, AdlibPop.ALIGN_BOTTOM, 50); - 아래의메소드를호출하여애드립팝배너를숨길수있습니다. (AdlibActivity) hideadlibpop(); (AdlibManager 생성시 ) _amanager.hideadlibpop(); 16
애드립팝배너 - 팝배너수신성공, 실패등에대한이벤트처리가필요한경우, handler 를이용할수있습니다. showadlibpop(adlibpop.align_bottom, 30, new Handler() public void handlemessage(message message) try switch (message.what) case AdlibManager.DID_SUCCEED: Log.d("ADLIBr", "onreceivedpopbanner"); break; case AdlibManager.DID_ERROR: Log.d("ADLIBr", "onfailedpopbanner"); break; case AdlibManager.POP_CLOSED: Log.d("ADLIBr", "onclosedpopbanner"); break; catch(exception e) ); 17
애드립리워드배너 ( 띠배너 ) - Background request 를통해지면낭비없이, 더높은단가의광고를우선적으로노출합니다. - 별도플랫폼의회원가입이나 SDK 연동없이, 바로제휴플랫폼의광고를효율적으로노출할수있습니다. - 애드립리워드배너는실시간단가정보를활용하여, 기준보다높은단가의광고를우선노출하기때문에기존보다더높은광고수익을기대할수있습니다. - 대쉬보드의전역설정에서 R Banner 단가를 Auto 혹은원하는단가로설정후 ON 선택하여 저장및적용하기 버튼을클릭합니다. - 위설정을키는것만으로바로리워드배너를앱에노출할수있습니다. 18
애드립리워드배너 ( 띠배너 ) 플랫폼별성공과실패이벤트를받고싶다면아래와같이 handler 를등록하면됩니다. this.setadshandler(new Handler() @Override public void handlemessage(message message) try switch (message.what) case AdlibManager.DID_SUCCEED: Log.d("ADLIBr", "onreceivead " + (String)message.obj); break; case AdlibManager.DID_ERROR: Log.d("ADLIBr", "onfailedtoreceivead " + (String)message.obj); break; catch(exception e) ); 19
애드립리워드배너 ( 전면배너 ) - 대쉬보드의간단한설정으로 앱시작시 또는 앱종료시 에전면배너를자동노출할수 있습니다. - 그외의시점이나, 버튼클릭등과같은이벤트발생시에는직접호출하여전면배너를 노출할수있습니다. - 직접호출하여전면배너를노출할때는다양한플랫폼을스케줄링할수있습니다. 20
애드립리워드배너 ( 전면배너 ) 1. 자동노출 - 대쉬보드에서 앱시작시 나 앱종료시 를 ON 으로설정하시면, 아무런구현없이해당시점에전면배너가노출됩니다. - 단, 자동노출기능은스케줄링을사용할수없으며, 애드립에서제공하는전면배너노출만가능합니다. 21
애드립리워드배너 ( 전면배너 ) 2. 직접호출 전면배너자동노출을사용하지않고직접호출을하기위해서는아래코드를입력해주세요. (AdlibActivity) loadinterstitialad(); - loadfullinterstitialad(); - full size (AdlibManager 생성시 ) _amanager.loadinterstitialad(this); _amanager.loadfullinterstitialad(this); - - full size 전면배너수신성공, 실패등에대한이벤트처리가필요한경우, handler 를이용할수있습니다. loadinterstitialad(new Handler() public void handlemessage(message message) try switch (message.what) case AdlibManager.DID_SUCCEED: Log.d("ADLIBr", "onreceivead " + (String)message.obj); break; case AdlibManager.INTERSTITIAL_FAILED: Log.d("ADLIBr", onfailedtoreceivead"); break; case AdlibManager.INTERSTITIAL_CLOSED: Log.d("ADLIBr", "onclosedad " + (String)message.obj); break; catch(exception e) ); 22
애드립리워드배너 ( 전면배너 ) 2. 직접호출 ( 스케줄링 ) - 대쉬보드에서전면배너스케줄링사용을켜면, 스케줄설정을할수있습니다. - 전면광고수신에실패하면애드립전면배너 + 설정된플랫폼순서대로전면광고를호출합니다. 23
애드립리워드배너 ( 전면배너 ) 3. 전면배너 view 활용 - 애드립전면배너 View 를다른형태로이용할수있도록 API 를지원합니다. - 아래의메소드를호출하여 AdlibInterstitialView 를원하는곳에사용할수있습니다. - 자세한내용은샘플프로젝트에서확인할수있습니다. // getinterstitialview(width(dp), maxheight(dp), handler); // width height view. // height maxheight maxheight view. getinterstitialview(200, 300, new Handler() public void handlemessage(message message) try switch (message.what) case AdlibManager.DID_SUCCEED: AdlibInterstitialView iview = (AdlibInterstitialView)message.obj; // getviewheight height (dp). int viewheight = iview.getviewheight(); break; case AdlibManager.DID_ERROR: // break; catch(exception e) ); 24
애드립리워드배너자세히 리워드배너노출을위해코드상에추가로구현할내용은없습니다. 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.read_phone_state" /> <uses-permission android:name="android.permission.access_fine_location"/> <uses-permission android:name="android.permission.access_location_extra_commands" /> <uses-permission android:name="android.permission.access_wifi_state" /> <uses-permission android:name="android.permission.access_network_state" /> <-- --> <--. --> <activity android:name="com.mocoplex.adlib.adlibdialogactivity" android:theme="@android:style/theme.translucent" android:configchangesnges="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" /> <--. --> 25
애드립리워드링크 애드립리워드링크개요 - 기존 Mediation 시스템과별도로동작하는시스템입니다. - 광고의자유로운위치설정이가능하며, 아이콘형태로최소한의지면을사용합니다. - 배너광고이외의수익을추가로더얻을수있습니다. - 노출여부를관리자페이지에서손쉽게설정할수있습니다. 26
애드립리워드링크 애드립리워드링크는기존의 mediation 시스템과개별적으로동작합니다. 애드립리워드링크를이용해, 앱에 [ 아이콘 ] 형태의광고를노출할수있으며, [ 아이콘 ] 광고를이용하여배너수익외추가수익을거둘수있습니다. 리워드링크의카테고리상품은계속적으로확대적용될예정이며, 매뉴얼에서는 [ 리워드패션링크 ] 적용샘플을안내합니다. 애드립리워드링크를앱에적용하기위해서는 메뉴를통해서리워드링크 API 키를발급받습니다. 노출할아이콘을선택하고노출여부를결정한후 실제앱구현부에발급받은 API 키를적용합니다. 27
리워드링크사용법 - 구현 리워드링크아이콘을노출하기원하는 Activity 의 onresume 과 onpause 에아래와같이호출합니다. 애드립 mediation 과별도로동작하며, 샘플프로젝트를참조하여노출을원하는 Activity 에 2 라인만추가하면모든적용이완료됩니다. @Override public void onresume() AdlibRewardLink.getInstance().rewardLink(this, "REWARD_LINK_KEY", x, y, align); super.onresume(); @Override protected void onpause() AdlibRewardLink.getInstance().pauseRewardLink(this); super.onpause(); x - x 축 padding. pixel 단위의 int 양수값 y - y 축 padding. pixel 단위의 int 양수값 align - 아이콘정렬기준. AdlibRewardIcon.ALIGN_LEFT_TOP AdlibRewardIcon.ALIGN_RIGHT_TOP AdlibRewardIcon.ALIGN_LEFT_BOTTOM 좌측상단 우측상단 좌측하단 AdlibRewardIcon.ALIGN_RIGHT_BOTTOM 우측하단 아이콘 align의기준값에서 x축으로 x만큼이동, y축으로 y만큼이동한곳에아이콘이배치됩니다. 28
리워드링크사용법 - 구현 리워드링크아이콘사용예제 (*) 아이콘위치는아이콘의중심점기준입니다. 1 4 0 p x. 20px 1 AdlibRewardLink.getInstance().rewardLink(this, "KEY", 20, 40, AdlibRewardIcon.ALIGN_RIGHT_TOP); 2 AdlibRewardLink.getInstance().rewardLink(this, "KEY", 30, 70, AdlibRewardIcon.ALIGN_LEFT_BOTTOM); 30px. 2 7 0 p x 29
리워드링크사용법 - 구현 2 - 용도에따라아이콘을직접 add, remove 할수있도록 View 를 return 하는 API 를지원합니다. - 아래의메소드를호출하여 AdlibRewardIconView 를원하는곳에사용할수있습니다. - 자세한내용은샘플프로젝트에서확인할수있습니다. AdlibRewardLink.getInstance().getRewardLinkInfo(this, "REWARD_LINK_KEY", new Handler() public void handlemessage(message message) try switch (message.what) case AdlibManager.DID_SUCCEED: AdlibRewardIconView iconview = (AdlibRewardIconView)message.obj; // view width int w = iconview.getwidthsize(); // view height int h = iconview.getheightsize(); break; case AdlibManager.DID_ERROR: break; catch(exception e) ); 30
리워드링크사용법 - 직접호출예제 리워드링크직접호출예제 아이콘노출이아닌앱의별도버튼이나메뉴를통해리워드링크의랜딩페이지를호출할수있습니다. 버튼혹은메뉴클릭시호출되는 hanlder 에아래코드를입력해주세요. AdlibRewardLink.getInstance().showRewardLink(this, "REWARD_LINK_KEY"); 자세한내용은샘플프로젝트에서확인하실수있습니다. 31
애드립리워드링크자세히 리워드링크노출을위한코드구현이마무리되었다면 AndroidManifest.xml 파일에권한및 activity 설정내역이추가되었는지꼭확인해주세요. (Manifest 설정은 mediation 과공유합니다.) <--. --> <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.read_phone_state" /> <uses-permission android:name="android.permission.access_fine_location"/> <uses-permission android:name="android.permission.access_location_extra_commands" /> <uses-permission android:name="android.permission.access_wifi_state" /> <uses-permission android:name="android.permission.access_network_state" /> <-- --> <--. --> <activity android:name="com.mocoplex.adlib.adlibdialogactivity" android:theme="@android:style/theme.translucent" android:configchangesnges="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" /> <--. --> 32
Smart Dialog 란? - 공지사항알림, 앱업데이트유도등개인화된대화상자를별도구현없이손쉽게생성할수있습니다. - 온라인에서의간단한설정만으로손쉽게대화상자를컨트롤할수있습니다. - 대화상자를통해배너가노출될때마다 3,000 여개의앱이사용중인애드립네트워크안에서 나의앱도교차홍보되어, 더많은사용자들에게나의앱을알릴수있습니다. 33
- 대화상자는대쉬보드의대화상자탭에서 대화상자추가하기 를클릭후원하는형태로설정하여노출할수있습니다. - 노출시점설정시, App 시작시점은프로젝트에서의소스구현분의 AdlibConfig.getInstance().setAdlibKey("ADLIB API KEY"); 해당소스가구현되어있는 Activity 가 create 되는시점이며, App 종료시점역시같은 Activity 가 destroy 되는시점입니다. 34
자주묻는질문 FAQ - 꼭 AdlibActivity 를상속받아구현해야하나요? 애드립과관련한기본적인구현은 AdlibManager 클래스에서구현되었으며이클래스를멤버로 Activity status 에맞추어멤버함수를호출하여사용가능합니다. https://github.com/mocoplex/adlibr-sdk-android/blob/master/adlibrtestproject/src/test/adlib/project/adlibtestprojectactivity4.java 위주소에서자세한구현내역을확인가능합니다. - 각나라에맞게광고스케줄을달리적용하고싶습니다. ( 지역타게팅 ) 애드립의앱스케줄설정화면에서, 타게팅을원하는나라를추가하여손쉽게노출전략을설정할수있습니다. - proguard 적용후광고, 대화상자가보이지않습니다. 실제바인드하는패키지의난독화로광고가보이지않는현상이나타날수있습니다. -keep 옵션을주어아래코드에서사용된패키지경로의난독화를방지합니다. 자세한구현내용은테스트프로젝트의 proguard.cfg 파일 또는 https://github.com/mocoplex/adlibr-sdk-android/blob/master/adlibrtestproject/proguard.cfg 위주소를참고해주세요. 35
정리 애드립연동이마무리되었습니다. ## 실제프로젝트에애드립을연동하기위해 ## 1. 각플랫폼의 ID 발급및 SDK 다운로드 2. SDK 프로젝트에라이브러리추가 3. AndrodiManifest.xml 수정 4. test.adlib.project.ads 안의광고 ID 설정부분수정 5. 광고를보여줄 Activity 의 AdlibActivity 상속 ( 일반 Activity 의경우에는 AdlibManager 생성및 oncreate, onresume, onpause, ondestroy 호출 ) 6. AdlibConfig.getInstance() 를통한전역적인광고설정 ( 일반 Activity 의경우이작업보다 AdlibMnager 의생성및 oncreate 가먼저이루어져야합니다.) 7. AdlibAdViewContainer 생성및 bind 관련된추가적인개발관련한문의사항과고급설정등관련내용은 http://adlibr.com 의개발자지원메뉴를통해공유되고있습니다. 감사합니다. 36