From b31228d987cb286f1faddb55892f7731b814d800 Mon Sep 17 00:00:00 2001 From: airkjw Date: Sat, 13 Jun 2026 18:31:20 +0900 Subject: [PATCH] docs: AdMob + IAP real-id setup guide for owner (Phase 5 finalize) Step-by-step owner guide to register the AdMob apps + 6 ad units, create the remove_ads IAP in both stores, and the exact values to send back so the TODO_REAL_* ad ids and native AdMob app ids get swapped in. --- docs/monetization-setup-guide.md | 108 +++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 docs/monetization-setup-guide.md diff --git a/docs/monetization-setup-guide.md b/docs/monetization-setup-guide.md new file mode 100644 index 0000000..6e1ba95 --- /dev/null +++ b/docs/monetization-setup-guide.md @@ -0,0 +1,108 @@ +# AdMob + IAP 실제 ID 준비 가이드 (오너용) + +코드(Phase 5)는 이미 완성돼 있고 **Google 테스트 광고**로 동작합니다. 이 문서대로 +각 콘솔에서 앱/광고단위/상품을 만들고, 마지막 "**Claude에게 보낼 값**" 목록을 +알려주시면 제가 실제 ID로 교체해 마무리합니다. + +공통 정보: +- 번들 ID(앱 식별자): **`com.airkjw.blockseasons`** (iOS·Android 동일) +- 앱 이름: **Block Seasons** + +--- + +## 1. AdMob — 앱 2개 + 광고단위 6개 (약 15분) + +https://apps.admob.com → 좌측 **앱** → **앱 추가**. + +### iOS 앱 등록 +1. 플랫폼: **iOS**. +2. "앱이 앱 스토어에 등록되어 있나요?" → 아직이면 **아니요** 선택 후 수동 등록 + (앱 이름 `Block Seasons` 입력). 나중에 스토어 출시 후 연결 가능. +3. 생성되면 그 앱의 **앱 ID**(`ca-app-pub-...~...` 형식)를 적어둡니다 → **iOS 앱 ID**. +4. 그 앱 안에서 **광고 단위** 3개 생성: + - **전면(Interstitial)** — 이름 예: `ios_interstitial` + - **보상형(Rewarded)** — 이름 예: `ios_rewarded` + - **배너(Banner)** — 이름 예: `ios_banner` + 각 광고 단위 ID(`ca-app-pub-.../...` 형식)를 적어둡니다. + +### Android 앱 등록 +1. 플랫폼: **Android**, 같은 방식으로 등록 → **Android 앱 ID** 기록. +2. 광고 단위 3개 생성: `android_interstitial`, `android_rewarded`, `android_banner` → 각 ID 기록. + +> 광고 형식 설정은 기본값으로 둬도 됩니다. (보상형은 보상 금액/이름을 물어보면 +> 임의로 1 / "reward"로 두세요 — 우리 코드는 금액을 쓰지 않습니다.) + +> ⚠️ **본인 광고를 직접 클릭하지 마세요** (AdMob 무효 트래픽 정책). 실기기 +> 테스트는 디버그 빌드(자동으로 테스트 광고)로 하거나, AdMob **설정 → 테스트 +> 기기**에 본인 기기 광고 ID를 등록하세요. + +--- + +## 2. App Store Connect — 앱 + remove_ads IAP (약 10분) + +https://appstoreconnect.apple.com + +1. **앱 → +** → 새 앱 생성: 플랫폼 iOS, 이름 `Block Seasons`, + 번들 ID `com.airkjw.blockseasons`(Apple Developer에서 먼저 App ID 등록 필요), + SKU 임의(예: `blockseasons01`). +2. 좌측 **수익화 → 앱 내 구입 → +**: + - 유형: **비소모성(Non-Consumable)** + - **제품 ID: `remove_ads`** ← 코드가 이 값을 그대로 찾습니다. **반드시 동일하게.** + - 참조 이름: `Remove Ads`, 가격: 원하는 등급(예: ₩1,500 / $0.99) 선택. + - 현지화(영문/한글) 표시 이름·설명 입력 후 저장. +3. **Sandbox 테스터** 계정을 만들어두면(사용자 및 액세스 → Sandbox) 결제 테스트 가능. + +--- + +## 3. Google Play Console — 앱 + remove_ads 상품 (약 10분) + +https://play.google.com/console + +1. **앱 만들기**: 이름 `Block Seasons`, 게임/무료 선택. +2. 먼저 **내부 테스트 트랙에 서명된 빌드(AAB) 1개를 업로드**해야 인앱 상품을 만들 수 + 있습니다 (Play 제약). 이 빌드는 Phase 7에서 제가 만들어 드립니다 — 지금은 + 1~2단계만 해두고, 상품 생성은 그 빌드 업로드 후 진행해도 됩니다. +3. **수익 창출 → 제품 → 인앱 상품 → 상품 만들기**: + - **제품 ID: `remove_ads`** ← iOS와 동일하게. + - 이름 `Remove Ads`, 가격 설정, 활성화. +4. **라이선스 테스터**(설정 → 라이선스 테스트)에 본인 Google 계정을 넣으면 샌드박스 결제 가능. + +--- + +## 4. (Phase 7) app-ads.txt — 광고 수익 인증 + +AdMob이 광고 인벤토리 판매를 인증하려면, 스토어 리스팅의 "개발자 웹사이트" +도메인 루트에 `app-ads.txt`가 있어야 합니다. 내용 한 줄: +``` +google.com, pub-XXXXXXXXXXXXXXXX, DIRECT, f08c47fec0942fa0 +``` +(`pub-XXXX...`는 AdMob 게시자 ID — AdMob 설정에 표시됨.) GitHub Pages 무료 사이트면 +충분합니다. **이건 Phase 7에서 함께 처리**하니 지금은 게시자 ID만 같이 적어주세요. + +--- + +## ✅ Claude에게 보낼 값 (이것만 주시면 코드 교체 끝) + +``` +AdMob 게시자 ID: pub-________________ +AdMob iOS 앱 ID: ca-app-pub-________~________ +AdMob Android 앱 ID: ca-app-pub-________~________ + +iOS 전면 광고단위: ca-app-pub-________/________ +iOS 보상형 광고단위: ca-app-pub-________/________ +iOS 배너 광고단위: ca-app-pub-________/________ +Android 전면 광고단위: ca-app-pub-________/________ +Android 보상형 광고단위: ca-app-pub-________/________ +Android 배너 광고단위: ca-app-pub-________/________ + +IAP 제품 ID: remove_ads (그대로면 OK / 다르게 만들었으면 알려주세요) +``` + +이 값을 받으면 제가: +1. `lib/services/ad_config.dart`의 `_real*` 6개 광고단위 ID 교체 +2. `ios/Runner/Info.plist`의 `GADApplicationIdentifier` → iOS 앱 ID로 교체 +3. `android/app/src/main/AndroidManifest.xml`의 `APPLICATION_ID` → Android 앱 ID로 교체 +4. (Phase 7) app-ads.txt 생성 + +까지 처리하고, 릴리스 빌드가 실제 광고를 띄우도록 마무리합니다. +(IAP 제품 ID가 `remove_ads`면 IAP 코드는 변경 불필요.)