2013-12-08 2 views
2

이틀 만에 SMART_BANNER가 좋은 클릭률 (CTR)에 가장 적합하지 않음을 알게되었고 admob의 광고 크기를 동적으로 전환해야했습니다.다른 기기의 Admob 배너 크기

여기 자바 코드가 있습니다. 4 인치 에뮬레이터에서 코드를 실행했을 때 728x90 크기의 광고가 요청되었으며 응답이 잘못된 광고 크기라는 것을 알았습니다. (오류에 대한 설명은 광고가 현재 화면에 맞지 않음) pls. 도움 :

AdSize adsize = AdSize.SMART_BANNER; 

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth(); 
int height = display.getHeight(); 
int orientation = display.getOrientation(); 

if(width >= 728 && height >= 90) { 
    adsize = AdSize.IAB_LEADERBOARD; 
    System.out.println("728 x 90"); 
} else if (width >= 468 && height >= 60) { 
    adsize = AdSize.IAB_BANNER; 
    System.out.println("468 x 60"); 
} else if (width >= 320 && height >= 50) { 
    adsize = AdSize.BANNER; 
    System.out.println("320 x 50"); 
} 

LinearLayout adContainer = (LinearLayout) findViewById(R.id.cakes); 
adView = new AdView(this, adsize, "xxxxxxxxxx"); 
AdRequest adRequest = new AdRequest(); 
adView.loadAd(adRequest); 

// Place the ad view. 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
adContainer.addView(adView, params); 
+1

그리고 Admob 조정에는 SMART_BANNER를 사용하지 않는 것이 좋습니다. –

답변

5

getWindowManager().getDefaultDisplay().getWidth() 픽셀 단위로 폭을 반환합니다. 밀도 독립적 픽셀의 너비를 기반으로 표시 할 배너를 결정해야합니다.

나는 오래 전부터 Android 리소스 설정을 사용하여 adBannerSize를 지정하는 것이 가장 좋은 해결책이라고 생각했습니다. 예 :

final AdSize adSize; 
final int adBannerSize = getResources().getInteger(R.integer.adBannerSize); 
switch (adBannerSize) { 
    case 1 : 
     adSize = AdSize.BANNER; 
     break; 
    case 2 : 
     adSize = AdSize.IAB_BANNER; 
     break; 
    case 3 : 
     adSize = AdSize.IAB_LEADERBOARD; 
     break; 
    default: 
     Log.w(TAG, "No AdSize specified"); 
     adSize = AdSize.BANNER; 
     break; 
} 

그러면 지원할 장치 구성에 맞게 광고 배너 크기를 쉽게 구성 할 수 있습니다.

1

V6.0부터 상수 A SMART_BANNER을 AdSize로 사용할 수 있으며 화면 크기에 따라 ADS가 다르게 표시됩니다.

0

동일한 문제가 있었지만 광고가 전체 화면 너비를 채우지 않아서 화면 크기 나 리소스 한정자에 의존 할 수 없었습니다.

AdSize documentation에 크기가 밀도와 무관 한 픽셀로 지정되어야한다는 것을 알게 된 후에 해결책을 찾았습니다. 최종 코드 :

int width = container.getWidth(); 
width /= getResources().getDisplayMetrics().density; 
int height = 50; 
if(width >= 728) 
    height = 90; 
else if(width >= 468) 
    height = 60; 

return new AdSize(width, height);