Android 기준, mobile app에 에 전면 및 배너 광고 넣는 법 입니다.
먼저 admob https://admob.google.com/ - 앱 - 광고 단위에 들어갑니다.
광고가 없으면 '광고 단위 추가' 로 추가합니다.
배너, 전면 등 중복 광고 단위도 허용 가능합니다.
여기서 중요한게, 광고 종류별로 id가 다르니 꼭 기록해놓습니다.
string.xml 에 기록해놓으면 정리가 잘 되기 때문에, 아래와 같이 정의하는 것도 좋은 방법인 것 같습니다.
3개의 id 중
- admob_app_id 는 AndroidManifest.xml 에
- banner 는 xml 에 view layout을 정의하고 onCreate() 안에 코드도 넣습니다.
- interstitial 전면 광고는 onCreate() 에만 넣습니다. (xml은 없음)
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="@string/admob_app_id"/>
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="@string/admob_banner_app_id">
</com.google.android.gms.ads.AdView>
MobileAds 를 initialize() 해주고 각각 전면, 배너 AdView 를 init 해줍니다.
전면 광고는 MainActivity 에서 back key 로 app 종료 시 띄울 목적이기 때문에
onBackPressed() 에 isLoad 인지 체크한 후 setAdLoad 하도록 구현했습니다.
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.InterstitialAd;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private InterstitialAd mInterstitialAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
.
.
.
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
});
initInterstitialAdView();
initBannerAdView();
}
private void initInterstitialAdView() {
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId(getString(R.string.admob_interstitial_app_id));
mInterstitialAd.loadAd(new AdRequest.Builder().build());
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {}
@Override
public void onAdFailedToLoad(int errorCode) {
Log.d(TAG, "on ad failed to load code : " + errorCode);
}
@Override
public void onAdOpened() {}
@Override
public void onAdClicked() {}
@Override
public void onAdLeftApplication() {}
@Override
public void onAdClosed() {}
});
}
private void initBannerAdView() {
AdView adView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
adView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() { }
@Override
public void onAdFailedToLoad(int errorCode) {
// Code to be executed when an ad request fails.
Log.d(TAG, "onAdFailedToLoad " + errorCode);
}
@Override
public void onAdOpened() { }
@Override
public void onAdClicked() {}
@Override
public void onAdLeftApplication() {}
@Override
public void onAdClosed() {}
});
}
@Override
public void onBackPressed() {
if (mInterstitialAd.isLoaded()) {
setAdLoad();
} else {
super.onBackPressed();
}
}
private void setAdLoad() {
mInterstitialAd.show();
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
finish();
}
});
}
}
만약, app_id 를 잘못넣거나 배너 & 전면광고와 id의 매칭이 잘못되면 아래와 같은 log가 발생합니다.
Ads : Ad failed to load : 1
- 0 : ERROR_CODE_INTERNAL_ERROR : 광고 서버에서 잘못된 응답을 받는 등 내부적으로 오류가 발생했다는 의미입니다.
- 1 : ERROR_CODE_INVALID_REQUEST : 광고 단위 ID가 잘못된 경우처럼 광고 요청이 잘못되었다는 의미입니다.
- 2 : ERROR_CODE_NETWORK_ERROR : 네트워크 연결 문제로 인해 광고 요청에 성공하지 못했다는 의미입니다.
- 3 : ERROR_CODE_NO_FILL : 광고 요청에는 성공했지만, 광고 인벤토리가 부족하여 광고가 반환되지 않았다는 의미입니다.
https://developers.google.com/admob/android/interstitial
onAdFailedToLoad 3 Error - https://yannichoongs.tistory.com/46
그리고, 마지막으로 build.gradle app 에 아래 dependencies 를 꼭 추가해줘야 합니다.
implementation
'com.google.android.gms:play-services-ads:19.1.0'
P.S Banner 광고 Height 를 알 고 싶다면 아래 api 로 얻어올 수 있습니다.
int adHeight = AdSize.BANNER.getHeightInPixels(this);
'Mobile 개발 > Android&IOS' 카테고리의 다른 글
Mac - adb 환경 변수 설정 및 오류 해결 방법 (0) | 2020.11.05 |
---|---|
Kotlin 코드를 java 로, java 코드를 Kotlin으로 변환하기 (1) | 2020.10.13 |
Android apk decompile 후 source 보기 (0) | 2020.08.12 |
구글 플레이 스토어 (Google Play Store) App 등록 방법 (1) | 2020.05.04 |
Google admob onAdFailedToLoad 3 오류 (0) | 2020.04.20 |