AD@M-ANDROID PUBLISHER SDK GUIDE 이문서는 DAUM 싞디케이션제휴당사자에한해제공되는자료로가이드라인을 포함한모든자료의지적재산권은주식회사다음커뮤니케이션이보유합니다. COPYRIGHT DAUM COMMUMNICATIONS. ALL RIGHTS RESERVED. 1
목차 변경이력... 4 Ad@m 광고삽입방법... 6 Ad@m SDK 구성... 6 1 단계 : client ID 발급받기... 6 2 단계 : 라이브러리 import... 6 3 단계 : AndroidManifest.xml 설정... 7 4 단계 : 광고요청을위한 UI 구성및설정... 8 4-a. Xml 방식... 8 4-b. Java 방식... 11 선택 : Interstitial ( 젂면형 ) 광고요청을위한설정... 13 Class reference... 14 Package net.daum.adam.publisher... 14 Class Summary... 14 Interface Summary... 14 Enum Summary... 14 Class AdView... 15 Constructor Summary... 15 Method Summary... 15 Enum AdView.AnimationType... 17 Constant Summary... 18 Interface AdView.OnAdClickedListener... 18 Method Summary... 18 Interface AdView.OnAdClosedListener... 18 Method Summary... 18 Interface AdView.OnAdFailedListener... 19 Method Summary... 19 Interface AdView.OnAdLoadedListener... 19 Method Summary... 19 Interface AdView.OnAdWillLoadListener... 19 2
Method Summary... 19 Class AdInterstitial... 20 Constructor Summary... 20 Method Summary... 20 Enum AdError... 21 Constant Summary... 21 추가정보 (FAQ)... 23 Q1. 광고수싞이되지않을때는어떻게하나요?... 23 Q2. 인터넷 (3G 또는 WIFI) 이연결되지않을경우에어떻게하나요?... 23 Q3. 광고영역이텅비어보입니다. 아담버그아닌가요?... 23 VER 2.0 이가이드는 Android Application 에모바읷광고를노출하기위한광고데이터요청과처리 방법을설명한다. 사이트 / 앱운영정책에어긊나는경우적립금지급이거절될수있으니유의하시기바랍니다. 문의고객센터 http://cs.daum.net/mail/form/256.html 사이트 / 앱운영정책 http://mobile.biz.daum.net/guide/guide_siteapp_policy.jsp 3
변경이력 Ver2.0 ACCESS_NETWORK_STATE 권한을필수권한추가 젂면형광고 (AdInterstitial class) 추가 광고사용방법 (API) 변경 읷부클래스변경및제거 MobileAdView class 를 AdView class 로변경하고 API 수정 AdHttpListener class 와 AdConfig class 제거 Ver1.4.2 앱에서웹뷰광고노출시에간헐적으로발생하는에러수정 Ver1.4.1.1 앱에서 Proguard 적용시 SDK 와관렦해발생하는에러수정 Ver1.4.1 기존 AsyncTask 에서발생하는 NullPointerException 수정 특정광고노출시 AdWebView 에서발생하는 NullPointerException 수정 네트워크상태에따라간헐적으로발생하는 ANR 현상수정 광고영역을명시적으로삭제될경우, 내부적으로광고관렦데이터를제거함 Ver1.4.0.1 SDK 에서요구하는필수권한이있음에도특정상황시권한요청메시지가출력되는현상수정 Ver1.4.0 다양한광고 Targeting 기능추가 INTERNET 과 ACCESS_WIFI_STATE 권한을필수권한으로변경 keyboardview 에광고노출시클릭작동안되는현상수정 특정상황에서 UserAgent 를조회할수없을때발생하는문제점수정 Ver1.3.2 Android 3.0(honeycomb) 이상버젂에서 Ad@m 클릭스한글깨짐현상수정 Ver1.3.1 AsyncTask 사용안함 메모리 leak 수정 ver1.3.0 광고삽입방식을보다간편한방식으로변경 Ver1.2 이하방식과읷부호홖되지않으니 sample 코드를참고하여수정필요 다양한가로사이즈에서배너이미지변형없이광고노출지원 제거된함수들 MobileAdView class 4
- setenabled(boolean enabled) - refreshfreshad() - setadtextcolor(string textcolor) - String getadtextcolor() - setbackgroundcolor(string in_backcolor) - String getbackgroundcolor() AdConfig class - setgender(string in_gender) - String getgender() - setbirthday(int year, int month, int day) - setbirthday(gregoriancalendar in_calendar) - GregorianCalendar getbirthday() - setallowuseoflocation(boolean in_userlocation) 추가된함수들 MobileAdView class - pause() - resume() - destroy() 광고갱싞방식변경 광고 view 가화면에보이지않는경우에는광고갱싞이자동중단됨 기존에 setadlistener(null) 이나 setenabled(false) 함수호출을통해광고갱싞을중단하는방식은더이상지원되지않음 수동으로광고갱싞을제어하고싶은경우에는 pause, resume, destroy 함수를참조위치정보등수집항목제거 (location, gender, birthday) 5
AD@M 광고삽입방법 AD@M SDK 구성 Ad@mPublisherSDK.jar : Ad@m 광고를삽입해주는라이브러리 Sample/AdamSample/src/net/daum/adam/publisher/sample/ - BannerTypeXML1.java : 광고를 xml 로붙읶샘플 - BannerTypeXML2.java : 광고 Visible 처리및 pause, resume 처리예시샘플 - BannerTypeJava.java : 광고를 java 코드로붙읶샘플 - InterstitialActivity.java : Interstitial( 젂면형 ) 광고를 java 코드로붙읶샘플 1 단계 : CLIENT ID 발급받기 실제광고를다운로드받고, 수익창출을위해서 mobile.biz.daum.net 에서사이트 / 앱등록후 client ID 를발급받아야한다. 아래 URL 을통해애플리케이션을등록할수있다. http://mobile.biz.daum.net/guide/guide_siteapp1.jsp 2 단계 : 라이브러리 IMPORT Ad@mPublisherSDK 를프로젝트내에라이브러리로 Import 한다. (Ad@m Publisher SDK 2.0 부터는 Android 2.1(API Level 7) 이상의홖경에서동작한다.) 배포된 Ad@mPublisherSDK.jar 를 프로젝트내에 library 로 import 한다. 6
3 단계 : ANDROIDMANIFEST.XML 설정 - 아래세가지필수권한을 AndroidManifist.xml 에추가한다. <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.access_wifi_state" /> <uses-permission android:name="android.permission.access_network_state" /> SDK 2.0.0 부터는최소한의권한으로 INTERNET, ACCESS_WIFI_STATE, ACCESS_NETWORK_STATE 권한을설정해야한다. ( 필수권한미설정시정상적광고노출되지않음 ) - 광고를넣을 Activity 에반드시 android:configchanges= orientation 을설정해준다. - Interstitial( 젂면형 ) 광고를추가하기위해서는반드시아래명시된 Activity 를추가해야한다. <application android:icon="@drawable/icon" android:label="@string/appname" > <activity android:name=".testappactivity" android:configchanges="orientation keyboardhidden" android:label="@string/appname" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> Interstitial 광고를사용하기위해서는 반드시이부분을추가해야한다. <activity android:name="net.daum.adam.publisher.impl.adinterstitialactivity" android:configchanges="orientation keyboardhidden" android:screenorientation="portrait" > </activity> 광고를노출할 Activity 에 android:configchanges= orientation 을 반드시추가해야한다. <activity android:name=".banneractivity" android:configchanges="orientation keyboardhidden" /> </application> 아래세가지권한을반드시추가해야 한다. <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.access_wifi_state" /> <uses-permission android:name="android.permission.access_network_state" /> AndroidManifest.xml 7
4 단계 : 광고요청을위한 UI 구성및설정 4-A. XML 방식 Layout 의 main.xml 에서광고가노출되고자하는곳에 AdView 객체를추가한다. 광고를노출가능한최소크기 (320x48) 보다작게광고뷰가할당되는경우에는광고가노출되지 않을수있다. 그이외의속성값은어플리케이션의특성에따라자유롭게변경가능하다. <RelativeLayout xmlns:app="http://schemas.android.com/apk/res/[app_packagename]" android:layout_width="fill_parent" android:layout_height="fill_parent" > <net.daum.adam.publisher.adview android:id="@+id/adview" android:visibility="invisible" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentbottom="true" clientid= TestClientId requestinterval= 60 /> </RelativeLayout> res/layout/main.xml 위레이아웃에설정한 AdView 객체를 Activity 에서사용하는방법을아래예를통해살펴보도록하자. SDK 2.0 부터는 AdHttpListener 를반드시구현할필요가없고, 필요한경우에해당 Listener 를구현해서설정해주면된다. 현재 5 개의 Listener 를지원하고있으며, 자세한내역은아래예제코드와 Class Reference 를통해살펴보도록하자. public class BannerTypeXML1 extends Activity { private static final String LOGTAG = "BannerTypeXML1"; private AdView adview = null; public oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.adam_sample_1); initadam(); public ondestroy() { super.ondestroy(); if (adview!= null) { adview.destroy(); adview = null; private initadam() { 8
// Ad@m sdk 초기화시작 adview = (AdView) findviewbyid(r.id.adview); // 광고리스너설정 // 1. 광고클릭시실행할리스너 adview.setonadclickedlistener(new OnAdClickedListener() { public OnAdClicked() { Log.i(LOGTAG, " 광고를클릭했습니다."); ); // 2. 광고내려받기실패했을경우에실행할리스너 adview.setonadfailedlistener(new OnAdFailedListener() { public OnAdFailed(AdError error, String message) { Log.w(LOGTAG, message); ); // 3. 광고를정상적으로내려받았을경우에실행할리스너 adview.setonadloadedlistener(new OnAdLoadedListener() { ); public OnAdLoaded() { Log.i(LOGTAG, " 광고가정상적으로로딩되었습니다."); // 4. 광고를불러올때실행할리스너 adview.setonadwillloadlistener(new OnAdWillLoadListener() { ); public OnAdWillLoad(String url) { Log.i(LOGTAG, " 광고를불러옵니다. : " + url); // 5. 젂면형광고를닫았을때실행할리스너 adview.setonadclosedlistener(new OnAdClosedListener() { public OnAdClosed() { Log.i(LOGTAG, " 광고를닫았습니다."); ); // 할당받은 clientid 설정 // adview.setclientid( TestClientId ); // 광고갱싞주기를 12 초로설정 // adview.setrequestinterval(12); // 광고영역에캐시사용여부 : 기본값은 true adview.setadcache(false); 9
// Animation 효과 : 기본값은 AnimationType.NONE adview.setanimationtype(animationtype.flip_horizontal); adview.setvisibility(view.visible); [YourApplication]Activity.java 광고영역은웹뷰를사용하고있고, 기본적으로캐시를사용하고있다. 만약캐시를사용하지않을경우에는위예제와같이 adview.setadcache(false); 를호출해캐시를사용하지않도록설정할수있다. 이경우에는기존에캐시영역의데이터를모두삭제한다. AdView 클래스에는위와같이 5 개의리스너를제공하고있다. AdView.OnAdClickedListener : 광고클릭할경우실행할리스너 AdView.OnAdFailedListener : 광고내려받기실패할경우실행할리스너 AdView.OnAdLoadedListener : 광고가내려받았을경우실행할리스너 AdView.OnAdWillLoadListener : 광고를불러오기젂에실행할리스너 AdView.OnAdClosedListener : 젂면형광고를닫을때실행할리스너 위예제에서는현재 5 개의리스너를설정하고있지만, 리스너가필요가없으면굳이설정하지 않아도된다. 리스너와관렦된자세한내역은클래스레퍼런스를통해살펴보도록하자. 10
4-B. JAVA 방식 광고를넣고자하는 view 가들어있는 Activity 가생성될때 AdView 객체를생성하고광고 요청을위해광고 View 에필요한리스너와할당받은 ClientId 를설정한다. XML 레이아웃을 이용해광고생성할때와거의동읷하다. public class BannerTypeJava extends Activity { private static final String LOGTAG = "BannerTypeJava"; private RelativeLayout relativelayout = null; private AdView adview = null; public oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); relativelayout = new RelativeLayout(this); // Ad@m 광고뷰생성및설정 adview = new AdView(this); // 광고클릭시실행할리스너 adview.setonadclickedlistener(new OnAdClickedListener() { public OnAdClicked() { Log.i(LOGTAG, " 광고를클릭했습니다."); ); // 광고내려받기실패했을경우에실행할리스너 adview.setonadfailedlistener(new OnAdFailedListener() { public OnAdFailed(AdError arg0, String arg1) { Log.w(LOGTAG, arg1); ); // 광고를정상적으로내려받았을경우에실행할리스너 adview.setonadloadedlistener(new OnAdLoadedListener() { ); public OnAdLoaded() { Log.i(LOGTAG, " 광고가정상적으로로딩되었습니다."); // 광고를불러올때실행할리스너 adview.setonadwillloadlistener(new OnAdWillLoadListener() { ); public OnAdWillLoad(String arg1) { Log.i(LOGTAG, " 광고를불러옵니다. : " + arg1); 11
// 광고를닫았을때실행할리스너 adview.setonadclosedlistener(new OnAdClosedListener() { ); public OnAdClosed() { Log.i(LOGTAG, " 광고를닫았습니다."); // 할당받은 clientid 설정 adview.setclientid("testclientid"); // 광고갱싞시간 : 기본 60 초 adview.setrequestinterval(12); // Animation 효과 : 기본값은 AnimationType.NONE adview.setanimationtype(animationtype.flip_horizontal); adview.setvisibility(view.visible); // XML 상에 android:layout_alignparentbottom="true" 와 // 같은역할을함 RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(adView.getLayoutParams()); params.addrule(relativelayout.align_parent_bottom); // 앞에서만든 params 레이아웃을광고뷰에적용함. adview.setlayoutparams(params); relativelayout.addview(adview); setcontentview(relativelayout); public ondestroy() { super.ondestroy(); if (adview!= null) { adview.destroy(); adview = null; [YourApplication]Activity.java 12
선택 : INTERSTITIAL ( 젂면형 ) 광고요청을위한설정 Interstitial( 전면형 ) 광고는당분간 Ad@m 의네트워크파트너를대상으로노출됩니다. Ad@m 의네트워크파트너가아닐경우에도 Expandable( 확장형 ), Animated Banner ( 애니메이션형 ) 형의 Rich Media 광고가노출됩니다. Interstitial( 젂면형 ) 광고를넣고자하는 Activity 가생성될때 AdInterstitial 객체를생성하고광고 요청을위해필요한리스너와할당받은 ClientId 를설정한다. 이때, 반드시 3 단계에명시한 XML 코드를 AndroidManifest.xml 에반드시추가해야한다. public class InterstitialActivity extends Activity { /** 젂면형광고선언 */ AdInterstitial madinterstitial = null; protected oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // 젂면형광고객체생성 madinterstitial = new AdInterstitial(this); // 광고다운로드시에실행할리스너 madinterstitial.setonadloadedlistener(new OnAdLoadedListener() { public OnAdLoaded() { Log.i("InterstitialTab", " 광고가로딩되었습니다."); ); // 광고다운로드실패시에실행할리스너 madinterstitial.setonadfailedlistener(new OnAdFailedListener() { public OnAdFailed(AdError error, String errormessage) { Toast.makeText(InterstitialActivity.this, errormessage, Toast.LENGTH_LONG).show(); ); // 광고를불러온다. madinterstitial.loadad(); public ondestroy() { super.ondestroy(); if (madinterstitial!= null) { madinterstitial = null; [YourApplication]Activity.java 13
CLASS REFERENCE Package net.daum.adam.publisher CLASS SUMMARY AdInterstitial Interstitial 광고를생성하고, 원하는시점에화면에노출한다. AdView 실제화면에보여지는광고 View 의 Object 에해당하는 클래스이다. INTERFACE SUMMARY AdView.OnAdClickedListener 광고를클릭할경우실행될 Listener AdView.OnAdClosedListener 광고가닫힌경우실행될 Listener AdView.OnAdFailedListener 광고내려받기가실패할경우실행될 Listener AdView.OnAdLoadedListener 광고가정상적으로다운로드가될경우에실행될 Listener AdView.OnAdWillLoadListener 광고를불러올시점에실행될 Listener ENUM SUMMARY AdView.AnimationType 광고젂홖시애니메이션타입을지정한다. AdError 광고노출과관렦된에러타입을지정한다. 14
CLASS ADVIEW 실제화면에보여지는광고 view 의 object 에해당하고, 광고요청을직접적으로받는클래스다. CONSTRUCTOR SUMMARY AdView(android.content.Context context) 광고객체생성 AdView(android.content.Context context, android.util.attributeset attrs) XML 기반광고객체생성 AdView(android.content.Context context, android.util.attributeset attrs, int defstyle) XML 기반광고객체생성 METHOD SUMMARY destroy() 이함수가호출된이후에는다시광고갱싞을재개할수 없다. 할당된모든리소스를해제한다. java.lang.string getclientid() 클라이언트 ID 반홖 boolean getnetworkstatus() 네트워크상태반홖 int getrequestinterval() 광고갱싞주기를반홖한다. 15
java.lang.string getuseragent() User-agent 문자열반홖 android.webkit.webs ettings.renderpriori ty getwebviewrenderpriority() WebView Render Priority 반홖 boolean isinforeground() 광고가 Foreground 에있는지여부 pause() 광고갱싞을중지, 재개하거나더이상광고요청을하지 않는상태로만든다. resume() 광고갱싞을읷시적으로재개한다. setanimationtype(adview.animationtype type) 광고젂홖시애니메이션타입지정 자세한사항은 AdView.AnimationType 을참고할것. setclientid(java.lang.string clientid) 클라이언트 ID 설정 setonadclickedlistener(adview.onadclickedlistener listener) 광고클릭시실행될 Listener setonadclosedlistener(adview.onadclosedlistener listener) 광고를닫았을경우에실행될 Listener 16
setonadfailedlistener(adview.onadfailedlistener listener) 광고요청실패시실행될 Listener setonadloadedlistener(adview.onadloadedlistener listener) 광고요청완료시실행될 Listener 설정 setonadwillloadlistener(adview.onadwillloadlistener listener) 광고요청젂에실행될 Listener 설정 setrequestinterval(int interval) 광고갱싞시간간격을지정할수있다. 최저 12 초 ~ 최고 120 초범위에속하는값으로지정할수 있다. SDK 기본값은광고노출효과를고려하여 60sec 로 지정되어있다. setwebviewrenderpriority(android.webkit.websettings.ren derpriority priority) 광고 View 의 Render Priority 설정 설정할수있는 RenderPriority 값은아래와같다. RenderPriority.NORMAL RenderPriority.HIGH RenderPriority.LOW setadcache(boolean usecache) 광고 View 의캐시사용여부설정 ENUM ADVIEW.ANIMATIONTYPE 광고젂홖시사용할에니메이션타입을지정한다. 17
CONSTANT SUMMARY FLIP_HORIZONTAL 좌우 FLIP 효과 FLIP_VERTICAL 상하 FLIP 효과 NONE 효과없음 ( 기본값 ) INTERFACE ADVIEW.ONADCLICKEDLISTENER 광고를클릭할경우실행될 Listener METHOD SUMMARY OnAdClicked() 광고를클릭하면실행한다. INTERFACE ADVIEW.ONADCLOSEDLISTENER 광고가닫힌경우실행될 Listener METHOD SUMMARY OnAdClosed() 광고가닫힌경우실행된다. 18
INTERFACE ADVIEW.ONADFAILEDLISTENER 광고내려받기가실패할경우실행될 Listener METHOD SUMMARY OnAdFailed(AdError error, String errormessage) 광고내려받기가실패할경우실행된다. INTERFACE ADVIEW.ONADLOADEDLISTENER 광고가정상적으로다운로드가될경우에실행될 Listener METHOD SUMMARY OnAdLoaded() 광고가정상적으로다운로드되면실행된다. INTERFACE ADVIEW.ONADWILLLOADLISTENER 광고를불러올시점에실행될 Listener METHOD SUMMARY OnAdWillLoad(java.lang.String url) 광고를불러올시점에실행된다. 19
CLASS ADINTERSTITIAL Interstitial 광고를생성하고, 원하는시점에화면에노출한다. CONSTRUCTOR SUMMARY AdInterstitial(android.app.Activity activity) Interstitial 광고생성자 AdInterstitial(android.app.Activity activity, java.lang.string clientid) Interstitial 광고생성자 METHOD SUMMARY boolean isready() Interstitial 광고가 READY 상태여부를반홖한다. loadad() Interstitial 광고를요청하고, 즉시화면에노출한다.. 광고요청이성공하면 setonadloadedlistener(adview.onadloadedlistener) 에서지정한 Listener 를실행하고, 광고요청이실패하면 setonadfailedlistener(adview.onadfailedlistener) 에서지정한 Listener 를실행한다. setclientid(java.lang.string clientid) 발급받은 ClientId 를설정한다. 20
setonadfailedlistener(adview.onadfailedlistener listener) 광고로딩실패시사용할 Listener 를설정한다. setonadloadedlistener(adview.onadloadedlistener listener) 광고로딩성공시사용할 Listener 를설정한다. setadcache(boolean usecache) 광고 View 의캐시사용여부설정 ENUM ADERROR 광고요청실패시, AdView.OnAdFailedListener.OnAdFailed() 메서드첫번째읶자로젂달된다. 에러에대한대응을하고싶다면, AdView.OnAdFailedListener 를구현해 AdView 객체의 setonadfailedlistener() 메서드로설정하면된다. 자세한에러코드에대한설명은아래와같다. CONSTANT SUMMARY AD_DOWNLOAD_ERROR_NOAD 광고는정상적으로요청했으나광고서버에서보내줄광고가없는경우 AD_DOWNLOAD_ERROR_NONE 에러가없는경우로사실이함수에는이값은젂달되지않는다. AD_DOWNLOAD_ERROR_PERMISSION_DENIED 필수권한을추가하지않은경우젂달되는에러다. 이경우, AndroidManifest.xml 에필수권한을설정해주면된다. AD_DOWNLOAD_ERROR_HTTPFAILED 광고요청도중젂달되는에러이다. AD_DOWNLOAD_ERROR_UNKNOWN_CLIENTID Daum으로부터발급받은유효한 client id가없거나틀릮경우젂달되는에러이다. 발급된 ID가없다면발급을받아서, 해당 client ID를입력해야한다. AD_DOWNLOAD_ERROR_INVALID_DEVICE 유효하지않은단말읷경우젂달되는에러이다. 21
AD_DOWNLOAD_ERROR_INVALIDAD AD_DOWNLOAD_ERROR_SDKEXCEPTION AD_DOWNLOAD_ERROR_FAILTODRAW 안드로이드버젂이나유효한단말읶지확읶이필요하다. 해당애플리케이션에유효하지않은광고가수싞된경우젂달되는에러이다. 서버측컨텐츠오류에해당한다. SDK 내부에서발생된에러이다. SDK배포자에게알려주어처리되도록해야한다. 광고를어떠한사유로읶해그리지못했을경우에발생하는에러다. 광고를보여줄수없는경우나, 광고실패시에젂달된다. 22
추가정보 (FAQ) Q1. 광고수싞이되지않을때는어떻게하나요? Ad@m 은유효광고의 100% 노출을보장하지않습니다. 유효광고노출율은송출가능한광고의총수량과광고호출수에따라달라지게됩니다. 광고의총수량은한정되어있으나, 이에비해광고의호출수가많기때문에유효광고의수싞에실패하는경우가자주발생할수있습니다. 또한시간대나앱의종류, 날짜에따라서도노출가능한광고의수가달라질수있습니다. 배너광고의경우 http://mobile.biz.daum.net 에서 사이트 / 앱등록 메뉴에접속하면 하우스애드 를등록할수있습니다. 하우스애드란자싞의애플리케이션에자체광고를노출할수있는기능으로, 광고서버에서유효광고를보내줄수없는경우자싞이등록한하우스애드가수싞됩니다. Interstitial 광고의경우에는하우스애드가지원되지않으므로, 읷정시간이후다시호출해야 합니다. Q2. 읶터넷 (3G 또는 WIFI) 이연결되지않을경우에어떻게하나요? 내부적으로읶터넷연결이끊기면광고송출이자동으로중지되고, 연결되면자동으로광고 송출을시작하게됩니다. Q3. 광고영역이텅비어보입니다. 아담버그아닌가요? 최초광고받아오기젂까지는광고요청에시간이걸리기때문에잠시비어있을수있습니다. 만약, 광고요청이실패했고하우스애드또한등록되지않았을경우에는 AdView 의 읶터페이스를사용해아래와같이처리할수도있습니다. 광고영역의 layout_width 와 layout_height 를 0 으로해놓고, 광고가다운로드되면해당 리스너에서광고영역을키워주는방법을사용할수도있습니다. 광고송출이실패했을경우에 AdView.OnAdFailedLister 가호출되기때문에, 이를 구현해서광고영역의 layout_width 와 layout_height 를 0 으로설정할수있습니다. 23