Simple&Natural
[Android] 애드몹(Admob) 연동하기 본문
구글 애드몹 연동은 기본적으로 공식 문서에 잘 나와있습니다.
하지만 안드로이드를 배운지 얼마 안되시는 분들의 경우 공식문서의 딱딱한 설명이 낯설고 잘 이해가 되지 않는 경우가 많습니다. 여기서는 공식문서를 바탕으로 다소 어려울 수 있는 부분 혹은 실수할 수 있는 부분을 보완하여 앱에 광고를 연동하는 방법을 설명합니다.
시작하기 전
다음과 같은 기본 조건을 만족해야 합니다.
- Android 스튜디오 3.2 이상 사용
- minSdkVersion 16 이상
- compileSdkVersion 28 이상
- 권장사항: Google AdMob 계정을 만들고 앱을 등록합니다.
AdMob 계정은 기존에 구글 계정이 있다면 금방 만드실 수 있습니다.
혹시 계정을 만드는 게 귀찮거나 단순 테스트를 원한다면 아래의 Manifest 파일에 주석으로 적혀있는
테스트용 애드몹 앱 ID를 사용하시면 됩니다.
Build.Gradle(App)에 의존성 추가하기
dependencies {
...
implementation 'com.google.android.gms:play-services-ads:19.4.0'
}
AndroidManifest.xml 업데이트
android:name 을 com.google.android.gms.ads.APPLICATION_ID 으로 등록하고
android:value 값은 애드몹 등록 후 발급받은 App ID 를 입력하면 됩니다.
혹은 단순 테스트 목적이라면 테스트용 ID를 적어도 괜찮습니다.
<manifest>
<application>
<!-- 테스트용 애드몹 앱 ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="@string/admob_app_id"/>
</application>
</manifest>
<resources>
...
<string name="admob_app_id">ca-app-pub-XXXXXXXXXXX</string>
</resources>
모바일 광고 SDK 초기화하기
초기화는 앱이 실행되는 시점에 한 번만 호출하면 됩니다.
공식 문서에서는 아래와 같이 메인 액티비티가 만들어지는 시점에 초기화를 하고 있지만
제 경우에는 Application 클래스를 만들어서 onCreate 되는 시점에 호출하고 있습니다.
class MainActivity : AppCompatActivity() {
...
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
MobileAds.initialize(this) {}
}
...
}
또는
class MyApplication: Application() {
override fun onCreate() {
super.onCreate()
//AdMob Init
MobileAds.initialize(this)
}
}
보여줄 광고 선택
광고는 크게
- 배너광고
- 전면광고
- 네이티브광고
- 보상형광고
네 가지로 구분됩니다.
가장 간단한 전면광고에 대해 설명합니다.
전면광고는 InterstitialAd 객체를 만들어서 사용합니다.
adId를 통해 사용하고자 하는 광고의 Id를 등록하게 되는데 이때 테스트 목적이라면 반드시 테스트용 광고를
사용하셔야 합니다. 실제 광고는 애드몹에서 개별 광고 유닛을 발급받아 사용하시면 됩니다.
또 한 가지 주의하셔야 할 부분은 반드시 광고가 Load된 이후 시점에서 show를 호출하셔야 합니다.
아래의 코드에서는 리스너를 추가하고 광고가 로드 완료되면 자동으로 호출하게끔 작성하였습니다.
private lateinit var mInterstitialAd: InterstitialAd
...
// 테스트용 전면광고 ID: ca-app-pub-3940256099942544/1033173712
fun showAd(adId: String) {
mInterstitialAd = InterstitialAd(this)
mInterstitialAd.adUnitId = adId
mInterstitialAd.loadAd(AdRequest.Builder().build())
mInterstitialAd.adListener = object : AdListener() {
override fun onAdLoaded() {
if (mInterstitialAd.isLoaded) {
mInterstitialAd.show()
} else {
Log.d("MyTag", "The interstitial wasn't loaded yet.")
}
}
}
}
위 과정을 모두 완료하고 showAd()를 호출하면 다음과 같은 광고 화면이 보이게 됩니다.
'안드로이드(Android) > 기타' 카테고리의 다른 글
[Android] BottomNavigationView + Nav Component 연동 시 유의사항 정리 (0) | 2020.10.10 |
---|---|
[Android] Admob 오류 종류 (0) | 2020.10.09 |
[Android] Retrofit Field 사용 시 Encoding 문제 (0) | 2020.10.07 |
[Android] Retrofit + Moshi 를 이용한 Json 데이터 받아오기 (0) | 2020.10.07 |
BottomNavigationView + Hiding On Scroll (0) | 2020.09.28 |