안드로드이드 앱에 AdMob(애드몹) 광고를 넣어보자.
아래 정리한 내용은 아래의 링크를 따라가면 잘 나와있으나, 초보자인 내가 처음 해보니 이해하기 어려워, 다른 초보자들을 위해 정리해봤다.
참고 : https://developers.google.com/admob/android/quick-start
[진행 전 확인 사항]
- 안드로이드 스튜디오 3.5.1 기준
- 앱의 이름이 "MyTest"
- AdMob 에 가입 후 전면광고 광고단위 등록 완료
(가입시 앱ID가 기본 발급되고, 이후 광고단뒤 등록 시마다 광고단위ID 가 각각 발급된다.)
- 여기서는 아래의 테스트용 아이디를 사용하고, 실제 앱 배포시에는 자신이 발급받은 아이디를 사용한다.
* 앱ID : ca-app-pub-3940256099942544~3347511713
* 전면광고ID : ca-app-pub-3940256099942544/1033173712
- 목표 : 앱에서 backkey 를 누를 시 전면 광고 노출
1. build.gradle (Project: MyTest) 수정 - 클릭 시 MyTest 파일이 열림
.
.
allprojects {
repositories {
google()
jcenter()
}
}
.
.
위코드에 google() 부분 이 있는지 확인하고 없으면 추가
2. build.gradle (Module: app) 수정 - 클릭 시 app 파일이 열림
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
implementation 'com.google.android.gms:play-services-ads:18.3.0'
}
위 코드에 implementation 'com.google.android.gms:play-services-ads:18.3.0' 부분이 있는지 확인하고 없으면 추가
- 위 버전(18.3.0) 부분은 업데이트 될 수 있으므로 직접 확인할 것
(https://developers.google.com/admob/android/quick-start 참고)
3. AndroidManifest.xml 수정
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mytest">
<uses-permission android:name="android.permission.INTERNET"/>
<application
... >
.
.
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713"/>
.
.
</application>
</manifest>
- 위 <meta-data ... /> 부분을 추가한다. value 부분에는 AdMob 가입시 발급받은 앱ID를 입력한다.
위 예제소스에 입력되어 있는 아이디는 테스트용이다.
- <uses-permission android:name="android.permission.INTERNET"/> 부분도 없다면 추가한다.
4. MainActivity.java 수정
.
.
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;
public class MainActivity extends AppCompatActivity {
.
.
private InterstitialAd mInterstitialAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
.
.
.
//-- admob setting
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
});
mInterstitialAd = new InterstitialAd(this);
//"ca-app-pub-3940256099942544/1033173712" 는 구글에서 테스트용으로 공개한 Test Ad Id - 배포시 실제 Id 로 변경 해야 함
/*
@안드로이드용 테스트광고 ID -- (https://developers.google.com/admob/unity/test-ads?hl=ko)
- 배너 광고: ca-app-pub-3940256099942544/6300978111
- 전면 광고: ca-app-pub-3940256099942544/1033173712
- 보상형 동영상 광고: ca-app-pub-3940256099942544/5224354917
- 네이티브 광고 고급형: ca-app-pub-3940256099942544/2247696110
*/
mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
//광고 이벤트리스너 등록
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
Log.d("TAGHSS", "onAdLoaded");
}
@Override
public void onAdFailedToLoad(int errorCode) {
Log.d("TAGHSS", "onAdFailedToLoad");
}
@Override
public void onAdOpened() {
Log.d("TAGHSS", "onAdOpened");
}
@Override
public void onAdClicked() {
Log.d("TAGHSS", "onAdClicked");
}
@Override
public void onAdLeftApplication() {
Log.d("TAGHSS", "onAdLeftApplication");
}
@Override
public void onAdClosed() {
Log.d("TAGHSS", "onAdClosed");
// Code to be executed when the interstitial ad is closed.
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
});
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
/* backkey 누르면 광고 뜨게 처리 */
@Override
public void onBackPressed() {
Toast.makeText(this, "Back button pressed.", Toast.LENGTH_SHORT).show();
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
Log.d("TAGHSS", "The interstitial wasn't loaded yet.");
}
}
}
- 확인용으로 최초 로드 후 backkey 누르면 광고가 뜨도록 처리했다.
- 광고가 닫히면 새로운 광고를 로드하도록 onAdClosed 이벤트내 mInterstitialAd.loadAd 를 추가했다.
- 광고 닫힌 후 다른 액션이 필요하면 onAdClosed 이벤트내 코드를 추가한다.
5. 테스트 : 안드로이드 애뮬레이터 앱을 띄우고, 화면 로딩 완료 후 BackKey 를 누르면 아래와 같이 광고가 뜬다.
(테스트광고ID를 사용하여 광고페이지도 TEST 페이지가 뜬다. - 상단에 Test Ad 표기)
6. 빌드 : 문제 없이 잘 되면 앱ID 및 광고ID 를 본인의 것으로 변경하여 빌드한다.
(본인의 ID로 빌드한 뒤 앱에서 광고를 함부로 호출하거나 클릭하면 안된다)
'Programming > Android' 카테고리의 다른 글
안드로이드 키스토어(keystore) 만들기 (0) | 2024.06.05 |
---|---|
리액트 spa 로 제작한 안드로이드 앱 - 빙고 빙고 25 (0) | 2020.04.29 |
안드로이드 웹뷰에 로컬 HTML 사용하기 (0) | 2020.01.27 |
Android - webview 에 user_agent 값 추가 (0) | 2020.01.15 |
[안드로이드] 앱 시작시 하얀화면 없애기 (0) | 2019.12.14 |