2026. 2. 3. 05:20ㆍAI 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를 망치지 않는 배치 전략을 조금 더 깊이 다룬다. 어디에 광고를 넣고, 어디에는 절대 넣지 말아야 하는지를 정리할 예정이다.
참고 자료
- AdMob Android Quick Start
https://developers.google.com/admob/android/quick-start
'AI Product Building > HalloGerman' 카테고리의 다른 글
| [독일어 학습 앱 개발기 23편] 광고 도입 이후 사용자 반응과 지표 변화 – 무엇이 변했고, 무엇을 유지했는가 (0) | 2026.02.05 |
|---|---|
| [독일어 학습 앱 개발기 22편] 학습 앱에서 광고 UX를 망치지 않는 배치 전략 (0) | 2026.02.04 |
| [독일어 학습 앱 개발기 20편] AdMob 계정 생성과 앱 등록 – 처음 수익화를 시작하는 개발자 가이드 (0) | 2026.02.02 |
| [독일어 학습 앱 개발기 19편] 무료 학습 앱에서 AdMob을 선택한 이유 – 수익화의 현실적인 출발점 (0) | 2026.02.01 |
| [독일어 학습 앱 개발기 18편] 유지보수를 고려한 구조 설계 – 앱이 커져도 무너지지 않게 하는 기준 (0) | 2026.01.30 |