codingstairs
노트에듀라이프연락
⌕검색⌘K
koen

Navigation

  • Intro
  • Blog
  • Life

연락하기

로그인 없이도 보낼 수 있어요. 답변이 필요하면 이메일을 함께 적어 주세요.

  • 익명 폼으로 의견 남기기 →
  • ✉ warragon112@gmail.com
  • 카카오톡 오픈채팅 ↗

© 2026 codingstairs

  • 노트
  • 에듀
  • 검색
  • 라이프
  • 연락
  • 약관
  • RSS
  • GitHub
노트›frontend

Tauri 모바일과 AdMob

2026-04-28 게시· 2026-05-18 갱신·0회 조회

Tauri 모바일과 AdMob

Tauri 2 부터 Android · iOS 가 1 급 시민이 됐습니다. 모바일 앱은 데스크탑과 다른 배포·수익화 모델을 가집니다.

1. Tauri 모바일에 대한 이야기

Tauri 2.0 (2024-10) 이 Android 와 iOS 를 정식 지원합니다. 데스크탑 빌드와 같은 코드베이스에서 모바일 타겟을 추가합니다.

  • Android — System WebView 를 호스트, Rust 를 JNI (jni-rs) 로 Java/Kotlin 와 연결.
  • iOS — WKWebView 를 호스트, Rust 를 Objective-C/Swift 와 연결.

데스크탑처럼 tauri::command 가 그대로 동작합니다. 단 모바일 전용 기능 (권한·라이프사이클·푸시) 은 별도 플러그인입니다.

2. 사전 요구

Android (공통):

  • Android Studio (또는 cmdline-tools).
  • Android SDK (API 24 이상이 Tauri 2 의 minSdk).
  • Android NDK (Rust 크로스컴파일).
  • JDK 17+.

iOS (macOS 만):

  • Xcode 와 Command Line Tools.
  • Apple Developer 계정 (배포 시).

설치 후 pnpm tauri android init / pnpm tauri ios init 가 네이티브 프로젝트를 생성합니다.

3. Android 빌드 흐름

pnpm tauri android dev                # 디바이스/에뮬레이터에서 dev
pnpm tauri android build              # APK + AAB
pnpm tauri android build --apk        # APK 만
pnpm tauri android build --aab        # AAB 만

산출물: src-tauri/gen/android/app/build/outputs/{apk,bundle}/release/.

APK vs AAB:

  • APK — 단일 설치 파일. 사이드로드·내부 배포에 자주.
  • AAB (Android App Bundle) — Google Play 의 표준. 디바이스마다 최적화된 APK 를 Play 가 생성. 2021 년 8 월부터 신규 앱은 AAB 필수.

4. 서명

Play 배포는 서명이 필수입니다. keystore 파일 (.jks · .keystore) + 별칭 + 비밀번호.

# src-tauri/gen/android/keystore.properties
storeFile=../my-release.jks
storePassword=...
keyAlias=upload
keyPassword=...

Play Console 의 Play App Signing 을 켜면 업로드 키와 앱 서명 키를 분리합니다. 업로드 키 분실 시 복구가 가능해 권장됩니다.

5. AdMob 에 대한 이야기

AdMob 은 모바일 앱용 광고 네트워크입니다. 2006 년 창업자 Omar Hamoui 가 시작해 2009 년 Google 이 인수, 2010 년 정식 합병됐습니다. 지금은 Google AdSense / Google Ads 와 같은 인프라 위에서 모바일 광고를 처리합니다.

광고 형식:

형식 설명
Banner 화면 위/아래 고정 띠 광고. 가장 단순.
Interstitial 화면 전체를 덮는 전면 광고. 자연스러운 전환 시점에 표시.
Rewarded 보상형. 사용자가 자발적으로 시청하고 보상 (코인·기능 해제) 받음.
Rewarded Interstitial Rewarded 와 Interstitial 의 중간.
Native 앱 UI 와 어울리도록 커스텀 렌더.
App Open 앱이 열릴 때 표시되는 전면 광고.

각 형식은 별도 광고 단위 ID 를 가집니다.

6. AdMob 의 통합

네이티브 SDK (Google Mobile Ads SDK):

  • Android: com.google.android.gms:play-services-ads
  • iOS: GoogleMobileAds (CocoaPods/SPM)

Tauri 에서 이 SDK 를 호출하려면 두 길이 있습니다.

① 공식/커뮤니티 플러그인
   tauri-plugin-admob 같은 래퍼가 있으면 채택
   → 가용성·유지보수 상태 확인 필요

② 자체 플러그인 작성
   tauri-plugin 템플릿으로 Android(Kotlin/Java) + iOS(Swift) 작성
   → Rust 다리에 노출
   → 작업량 있지만 통제 명확

WebView 안에서 직접 광고 SDK 를 호출하는 길은 정책 위반에 가깝습니다 (Google 이 권장하지 않음). 네이티브 SDK 호출이 표준입니다.

개발 중에는 테스트 광고 단위 ID 를 써야 합니다. 실제 ID 로 자기 광고를 클릭/노출하면 계정 정지 사유입니다. Google 이 공식 테스트 ID 를 문서에 공개하고 있습니다.

7. iOS 의 광고 추적 — ATT

iOS 14.5 (2021-04) 부터 App Tracking Transparency (ATT) 가 적용됩니다. 다른 회사의 앱·웹사이트에서 사용자를 추적하려면 시스템 다이얼로그로 명시적 허용을 받아야 합니다.

영향:

  • 허용 거부 비율이 높으면 IDFA (광고 식별자) 가 사용 불가.
  • 광고 효율 측정 (컨버전 추적) 이 약화 → SKAdNetwork 같은 집계 모델로 보강.
  • Info.plist 에 NSUserTrackingUsageDescription 문자열 필수.
<key>NSUserTrackingUsageDescription</key>
<string>광고 개인화에 사용됩니다.</string>
import AppTrackingTransparency
ATTrackingManager.requestTrackingAuthorization { status in /* ... */ }

Android 도 비슷한 방향으로 움직였습니다. Privacy Sandbox for Android 가 광고 ID 와 추적을 점진적으로 대체하는 작업입니다.

8. Tauri 모바일 시작

# Android
pnpm tauri android init
pnpm tauri android dev

# iOS (macOS)
pnpm tauri ios init
pnpm tauri ios dev

Tauri 명령에서 광고 호출:

#[tauri::command]
async fn show_rewarded(app: tauri::AppHandle) -> Result<bool, String> {
    // 플러그인 또는 자체 JNI/objc 코드로 SDK 호출
    // Android: GMS Ads -> RewardedAd.load -> show
    // iOS: GADRewardedAd -> load -> present
    Ok(true)
}

9. 정책 체크리스트

  • 사용자 동의 (EU GDPR · UMP SDK).
  • 가족 정책 (13 세 미만 대상은 별도 규정).
  • 광고 클릭 유도 금지 (자체 클릭 · 보상 미끼).

10. 자주 걸리는 자리

에뮬레이터에서 광고 안 뜨는 문제 — 광고 ID · SDK 초기화 · 인터넷 권한 · 테스트 디바이스 등록을 한 번에 점검합니다. AdMob 이 "no fill" 을 자주 반환할 수 있습니다.

INTERNET 권한 누락 — AndroidManifest 에 명시합니다. 네트워크 보안 정책 (networkSecurityConfig) 이 광고 도메인을 차단할 수도 있습니다.

iOS Privacy Manifest (2024+) — Apple 이 요구하는 PrivacyInfo.xcprivacy 가 없으면 심사 거부. AdMob SDK 가 일부 자동 제공하지만 앱 측 작성이 필요한 항목이 따로 있습니다.

테스트 ID 를 잊고 출시 — 출시 전 환경별 ID 분리 (debug 와 release 의 strings.xml 분리 등) 가 안전합니다.

Tauri 플러그인 부재 — 광고 SDK 가 매 메이저 업데이트마다 API 가 바뀝니다. 커뮤니티 플러그인이 최신 SDK 를 따라가지 못할 수 있습니다.

ATT 다이얼로그 재요청 불가 — 한 번 거부하면 같은 다이얼로그가 다시 뜨지 않습니다. 설정 → 앱 → 추적 항목으로 안내해야 합니다.

하고픈 말

모바일 앱의 수익화는 광고가 가장 단순한 길입니다. 다만 정책 (테스트 ID · ATT · Privacy Manifest) 을 놓치면 계정 정지 또는 심사 거부로 이어집니다. 사용자 동의·UX 와 광고 빈도 사이의 균형이 운영의 핵심 결정입니다.

Next

  • sqlite-local
  • ocr-stt-tts

Tauri 2 문서 · Tauri Mobile 블로그 · Google AdMob · GMS SDK Android · GMS SDK iOS · Apple ATT · Apple Privacy Manifest · Privacy Sandbox for Android · Android App Bundle 을 참고합니다.

frontend 카테고리의 다른 글

카테고리 전체 보기 →
  • 도메인 위젯의 통일성 — 4개 도메인에 3개 위젯만 두지 마라
  • 관리자 UI — ResourceTable SSOT 패턴
  • 페이지 로딩 UX
  • 네이티브 통합 — OS 기능들
  • OCR · STT · TTS
  • SQLite — 로컬 앱의 단일 파일 DB