[독일어 학습 앱 개발기 21편] Android 앱에 AdMob 광고 붙이기 – 실제 구현 흐름과 주의사항

2026. 2. 3. 05:20AI Product Building/HalloGerman

반응형

이 글의 핵심
- Android 앱에 AdMob 광고를 연동하는 전체 구현 흐름 정리
- 학습 앱에서 광고 UX를 해치지 않기 위해 실제로 적용한 기준


20편에서 AdMob 계정 생성과 앱 등록 과정을 정리했다면, 이번 21편에서는 이제 실제로 Android 앱 코드에 AdMob 광고를 연동하는 과정을 다룬다.

HalloGerman 역시 이 과정을 거쳐 광고를 적용했다. 기술적으로는 단순해 보이지만, 학습 앱에서는 몇 가지 중요한 판단이 필요하다.


1. AdMob SDK 추가 – 가장 먼저 해야 할 일

AdMob 광고를 사용하려면 Google Mobile Ads SDK를 프로젝트에 추가해야 한다.

1-1. Gradle 의존성 추가


dependencies {
    implementation 'com.google.android.gms:play-services-ads:23.0.0'
}

SDK 버전은 Google 공식 문서를 기준으로 최신 안정 버전을 사용하는 것이 좋다.

공식 가이드:
https://developers.google.com/admob/android/quick-start


2. AndroidManifest 설정

SDK 추가 후에는 반드시 AndroidManifest.xml에 AdMob App ID를 등록해야 한다.

2-1. Manifest 설정 예시


<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>

이 App ID는 AdMob 콘솔에서 생성한 값이며, 광고 단위 ID와 혼동하지 않도록 주의해야 한다.


3. 광고 초기화는 어디서 해야 할까

AdMob 초기화는 앱 실행 시 한 번만 수행하는 것이 원칙이다.

HalloGerman에서는 Application 클래스에서 광고 SDK를 초기화했다.

3-1. AdMob 초기화 코드 예시


class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        MobileAds.initialize(this)
    }
}

이 방식은 여러 화면에서 광고를 사용하더라도 초기화 중복을 방지할 수 있다.


4. 배너 광고 적용 – 가장 기본적인 형태

학습 앱에서 가장 부담이 적은 광고 형태는 배너 광고다.

4-1. 레이아웃에 AdView 추가


<com.google.android.gms.ads.AdView
    android:id="@+id/adView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ads:adSize="BANNER"
    ads:adUnitId="ca-app-pub-xxxxxxxxxxxxxxxx/zzzzzzzzzz"/>

배너 광고는 홈 화면 하단이나 학습 결과 화면처럼 집중이 끝난 구간에만 배치했다.


4-2. 배너 광고 로딩 코드


val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)

이 코드 자체는 단순하지만, 어디서 호출하느냐가 UX를 결정한다.


5. 전면 광고(Interstitial)는 왜 조심해야 할까

전면 광고는 수익성은 높지만, 학습 앱에서는 가장 위험한 광고다.

  • 학습 흐름을 강제로 끊고
  • 사용자 반감을 쉽게 만들며
  • 앱 평가에 직접적인 영향을 준다

그래서 HalloGerman에서는 전면 광고를 학습 세션이 완전히 끝난 시점에서만 사용했다.


5-1. 전면 광고 로딩 구조 예시


InterstitialAd.load(
    context,
    AD_UNIT_ID,
    adRequest,
    object : InterstitialAdLoadCallback() {
        override fun onAdLoaded(ad: InterstitialAd) {
            interstitialAd = ad
        }
    }
)

광고 로딩 실패를 학습 로직과 연결하지 않는 것이 중요하다. 광고는 언제든 실패할 수 있다.


6. 광고 실패를 고려한 설계

광고는 항상 성공한다고 가정하면 안 된다.

  • 네트워크 문제
  • 광고 재고 부족
  • 정책 제한

이런 상황에서도 앱 기능은 정상 동작해야 한다. 그래서 광고 로직은 부가 기능으로만 취급했다.


7. 테스트 광고 ID를 사용해야 하는 이유

개발·테스트 단계에서는 반드시 Google이 제공하는 테스트 광고 ID를 사용해야 한다.

공식 가이드:
https://developers.google.com/admob/android/test-ads

실제 광고를 테스트 중에 클릭하면 계정 정지로 이어질 수 있다. 이 실수는 생각보다 자주 발생한다.


8. 학습 앱에서 광고 UX를 지키는 기준

HalloGerman에서 광고 적용 시 지킨 기준은 명확하다.

  • 입력 중에는 광고 없음
  • 집중 구간에는 광고 없음
  • 광고를 닫지 않아도 학습 가능

이 기준을 지키지 않으면, 광고 수익보다 사용자 이탈이 더 커진다.


9. 다음 편 예고

다음 22편에서는 학습 앱에서 광고 UX를 망치지 않는 배치 전략을 조금 더 깊이 다룬다. 어디에 광고를 넣고, 어디에는 절대 넣지 말아야 하는지를 정리할 예정이다.


참고 자료

 

반응형