Files
BlockSeasons/docs/store/phase7-submission-guide.md
T
airkjw b79960c949 docs(store): host privacy policy + app-ads.txt on Firebase, fill submission URLs
Deployed privacy-policy.html and app-ads.txt to block-seasons.web.app
(gru.farm root is an external site builder, not the NAS, so app-ads.txt
could not live there). Updated phase7 guide with the live URLs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 21:55:21 +09:00

168 lines
9.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Phase 7 — 스토어 제출 가이드 (오너 셀프 진행용)
> 이 문서 하나만 위에서부터 따라가면 **Google Play + Apple App Store 제출**까지 끝납니다.
> 코드/빌드/카피/개인정보처리방침은 모두 준비돼 있습니다. 여기 적힌 답변·문구를 **그대로 복붙**하세요.
> 막히면 Claude에게 "이 단계 막혔어" 하고 화면을 보여주면 됩니다.
마지막 업데이트: 2026-06-14
---
## ✅ 지금까지 완료된 것
**Google Play**
- 앱 생성: **Block Seasons** (`com.airkjw.blockseasons`)
- AAB 업로드: 내부 테스트 트랙에 `1 (1.0.0)` 게시됨
- 테스터 목록 설정 (`0614 테스트`)
- **판매자(결제) 프로필 설정 완료**
- **`remove_ads` 인앱상품 생성 + 활성** (173개 지역, "이전 버전과의 호환성" ✔)
**Apple App Store**
- App ID `com.airkjw.blockseasons` 등록, App Store Connect에 앱 생성
- `remove_ads` 비소모성 IAP 생성 + 가격 설정 (상태: 메타데이터 누락 → 아래 5단계에서 마무리)
**공통 자산 (이미 만들어 둠)**
- 앱 아이콘 512px: `docs/store/play_icon_512.png`
- 피처 그래픽 1024×500: `docs/store/feature_graphic.png`
-**개인정보처리방침 호스팅 완료**: `https://block-seasons.web.app/privacy-policy.html`
-**app-ads.txt 호스팅 완료**: `https://block-seasons.web.app/app-ads.txt`
- 스토어 카피 EN/KO: `docs/store/store-listing.md`
-**스크린샷** (각 3장: 홈·플레이·점수전):
- iOS 6.7"(1290×2796): `docs/store/screenshots/ios/`
- Android 폰(1080×1920): `docs/store/screenshots/android/`
- (시즌 여정 맵 컷은 추후 추가 예정 — 현재 3장으로 제출 충분)
---
# 0단계 — 먼저 해둘 3가지 (양 스토어 공통 전제)
### 0-1. 🔑 안드로이드 서명키 백업 (가장 중요, 분실 시 영구 업데이트 불가)
- 파일 `BlockSeasons/android/app/upload-keystore.jks`**2곳 이상**(클라우드+외장 등)에 백업
- 비밀번호 `35f52bb88a79b4279d3acce7935c33c9` (alias `upload`)을 비밀번호 관리자에 저장
- (Play 앱 서명을 쓰므로 이건 "업로드 키"지만 그래도 백업 필수)
### 0-2. ✅ 개인정보처리방침 + app-ads.txt 호스팅 — **완료** (Firebase Hosting)
두 파일을 이미 살아있는 Firebase Hosting(`block-seasons.web.app`)에 배포 완료. **아래 URL을 스토어 폼에 그대로 복붙**하세요.
| 항목 | 스토어에 넣을 값 |
|---|---|
| **개인정보처리방침 URL** | `https://block-seasons.web.app/privacy-policy.html` |
| **app-ads.txt** | `https://block-seasons.web.app/app-ads.txt` (live, text/plain ✔) |
| **개발자 웹사이트 / 마케팅 URL** | `https://block-seasons.web.app` |
> ⚠️ AdMob이 app-ads.txt를 인식하려면 **스토어의 "웹사이트/마케팅 URL"을 반드시 `https://block-seasons.web.app`로** 적어야 합니다(여기 루트의 app-ads.txt를 크롤링). `web.app`은 그 자체가 독립 루트 도메인이라 인식에 문제없음.
> 참고: `gru.farm` 루트는 NAS가 아니라 외부 사이트빌더(아임웹)라서 app-ads.txt를 못 올림 → Firebase로 호스팅함.
> 재배포 방법(파일 수정 시): `docs/store/`의 원본을 `deploy/`로 복사 후 `firebase deploy --only hosting --project block-seasons`.
### 0-3. 결제 계약 확인
- **Google**: 판매자 프로필 완료됨 ✔ (이미 했음)
- **Apple**: 아래 App Store **5-④ 유료 앱 계약**을 완료해야 IAP 판매·심사 가능 (세금/뱅킹 — 본인이 입력)
---
# A. GOOGLE PLAY — 남은 순서
위치: Play Console → Block Seasons → **대시보드 → "앱 설정"** 항목을 위에서부터 채우면 됩니다.
(내부 테스트 빌드는 이미 올라가 있으니, 아래는 **프로덕션 출시에 필요한 정책/리스팅** 작성입니다.)
### A-1. 앱 액세스 권한
**"모든 기능을 제한 없이 사용할 수 있습니다"** 선택 (로그인 없음).
### A-2. 광고
**"예, 앱에 광고가 있습니다."**
### A-3. 콘텐츠 등급 (설문)
- 이메일 입력 → 카테고리 **"게임"**
- 폭력/성적/언어/약물/도박 등 전부 **아니요** (단순 블록 퍼즐)
- 결과: **전체이용가 / Everyone / PEGI 3** 예상
### A-4. 타겟층 및 콘텐츠
- 대상 연령: **만 13세 이상**(13~15, 16~17, 18세 이상) 선택 권장 — **만 13세 미만은 선택하지 말 것**
(아동 대상이 되면 'Designed for Families' 정책 + 아동 개인정보 의무가 생겨 광고 단가에 불리)
- "앱이 아동의 관심을 끌도록 디자인되었나요?" → **아니요**
### A-5. 데이터 보안 (Data safety) — 아래 값 그대로
- 데이터 수집·공유: **예**
- **기기 또는 기타 ID** (광고 ID): 수집함 · 목적 **광고 또는 마케팅** · **Google과 공유함** · 사용자 연결 안 함
- **앱 활동 / 앱 상호작용**: 수집함 · 목적 **분석** · 공유 안 함 · 사용자 연결 안 함
- 전송 중 암호화: **예**
- 사용자가 데이터 삭제 요청 가능: 개인정보처리방침 문의 이메일 기재로 충족
- ⚠️ "아동 대상 앱" → **아니요**
### A-6. 기타 선언
- 정부 앱 / 금융 기능 / 건강 앱 → 전부 **아니요**
- 뉴스 앱 → 아니요. 콘텐츠 가이드라인·미국 수출법 → **동의**
### A-7. 메인 스토어 등록정보
`docs/store/store-listing.md`에서 복붙:
- **앱 이름**: `Block Seasons`
- **간단한 설명** (≤80): KO `블록을 놓아 줄을 지우고, 몇 주마다 새 테마 시즌을 즐기세요. 광고 강요 없는 편안한 퍼즐.`
- **자세한 설명** (≤4000): store-listing.md의 KO(또는 EN) 본문
- **앱 아이콘** (512×512): `docs/store/play_icon_512.png`
- **그래픽 이미지** (1024×500): `docs/store/feature_graphic.png`
- **휴대전화 스크린샷** (최소 2장): `docs/store/screenshots/android/` (3장)
- **카테고리**: 게임 → 퍼즐 · **태그**: 퍼즐/캐주얼
- **개인정보처리방침 URL**: `https://block-seasons.web.app/privacy-policy.html`
- **웹사이트(선택)**: `https://block-seasons.web.app` ← app-ads.txt 인식용으로 이 주소 권장
- **연락처 이메일**: `airkjw@gmail.com`
### A-8. 프로덕션 출시
1. **테스트 및 출시 → 프로덕션 → 새 버전 만들기**
2. 내부 테스트의 빌드를 **"라이브러리에서 추가"**로 가져오거나 AAB 재업로드(같은 `app-release.aab`)
3. 출시명/노트 입력 → 검토 → **출시 시작**(심사 제출)
4. ⚠️ **신규 개인 개발자 계정**은 "비공개 테스트 20명 × 14일" 후에야 프로덕션 가능 규정이 있습니다.
- 너는 이미 출시된 앱(복지앱)이 있어 **해당 없을 가능성이 높음**. 프로덕션에서 막히면 알려줘 — 비공개 테스트로 우회 안내할게.
### A-9. (출시 후) 샌드박스 결제 테스트
- 설정 → **라이선스 테스트**에 본인 Google 계정 추가 → 내부 테스트 앱에서 `remove_ads` 구매가 **실제 청구 없이** 테스트됨.
---
# B. APPLE APP STORE — 남은 순서
위치: [App Store Connect](https://appstoreconnect.apple.com) → Block Seasons
### B-1. 빌드 업로드 (Xcode 권장 — CLI는 경로 공백 이슈 회피)
1. Xcode로 `ios/Runner.xcworkspace` 열기
2. 상단 기기 선택을 **"Any iOS Device (arm64)"**
3. 메뉴 **Product ▸ Archive** (서명은 Xcode 자동 서명)
4. Organizer 창 → **Distribute App ▸ App Store Connect ▸ Upload**
5. 처리에 수십 분 → App Store Connect → **TestFlight**에 빌드가 나타남
> Claude가 대신 IPA를 만들기 어려운 이유: iOS 서명은 너의 Apple 인증서가 필요해서 Xcode에서 해야 안전함. 막히면 단계별로 안내할게.
### B-2. 앱 정보 / 버전 정보
- 카테고리: **게임 → 퍼즐**, 연령 등급 설문 → **4+**
- 부제(≤30): KO `시즌마다 새로워지는 블록 퍼즐`
- 프로모션 텍스트·설명·키워드: `docs/store/store-listing.md`에서 복붙
- **개인정보처리방침 URL**: `https://block-seasons.web.app/privacy-policy.html`
- **스크린샷**: `docs/store/screenshots/ios/` (1290×2796=6.7", 3장). 6.5"는 같은 컷 재업로드 또는 생략 가능
### B-3. 앱 개인정보 (App Privacy) — 아래 값 그대로
| 데이터 | 수집 | 목적 | 사용자 연결 | 추적 |
|---|---|---|---|---|
| 기기 ID(광고 식별자) | 예 | 제3자 광고 | 아니요 | **예** |
| 사용 데이터(제품 상호작용) | 예 | 분석, 앱 기능 | 아니요 | 아니요 |
- 추적 사용 이유(ATT) 문구 예: "비맞춤형 대신 맞춤형 광고를 제공하기 위해 사용합니다."
### B-4. IAP 마무리 (`remove_ads`)
- 표시 이름: EN `Remove Ads` / KO `광고 제거`
- 설명: `배너·전면 광고를 영구히 제거합니다. 보상형 영상은 그대로 사용할 수 있어요.`
- **리뷰용 스크린샷**: 앱 **설정 화면**(광고 제거 버튼 보이는 캡처) 1장 첨부
- ⚠️ **첫 IAP는 앱 버전과 함께 제출**해야 함 (버전 화면에서 IAP 포함시켜 제출)
### B-5. 계약 / 제출
-**유료 앱 계약(Paid Apps)**: 비즈니스 → 계약/세금/뱅킹 완료 (본인 입력) — IAP 판매·심사 전제
- 앱 심사 정보: 로그인 없음 → 데모 계정 불필요, 비고에 "No login required" 정도
- **심사 제출**
---
# 권장 진행 순서 (최단 경로)
1. **0-1 키스토어 백업** (5분, 지금)
2.**0-2 개인정보처리방침 + app-ads.txt 호스팅 완료** (`block-seasons.web.app` — 스토어 폼에 URL 복붙만 하면 됨)
3. **스크린샷 준비됨** ✅ (`docs/store/screenshots/`) — 리스팅에 바로 업로드
4. **Apple B-1 빌드 업로드 시작** (처리에 시간 걸리니 먼저 걸어두기)
5. Play A-1~A-7 + Apple B-2~B-4 문항 채우기 (대부분 위 표 복붙)
6. Apple B-5 유료앱 계약 → 양쪽 **심사 제출**
문항별로 막히면 그 화면만 보여줘 — 그 부분만 같이 풀자.