- CLAUDE.md v2.4: 현재 상태=출시 완료·유지보수 모드(버그 수정·요청 기능만), 결제 상품 실가격(월 4,400/년 44,000/평생 77,000), 출시·운영 메모로 재구성 (신형 ASC 제출 방식·특가 코드·남은 확인 1건: 프로덕션 iCloud 왕복) - HaruDanim.storekit: 로컬 테스트 가격을 실제 판매가와 일치 - Marketing: 체크리스트 완료 표시 + 실제 절차와 달랐던 점 기록, subscription-info 실가격 반영 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
12 KiB
Marketing — App Store 등록 자료
ASC(App Store Connect) 등록 때 그대로 붙여넣을 자료 모음. 앱 기능·문구가 바뀌면 이 폴더도 함께 갱신한다 (사용자 지시: 자료에 영향을 주는 변경이 생기면 별도 요청 없이 알아서 수정할 것 — 특히 description의 기능 목록, 스크린샷에 보이는 화면).
구성
AppStore/
description-{ko,en,ja}.txt 앱 설명 (4000자 이내) — 로케일별 '설명' 란
keywords.txt 키워드 (로케일별 100자 이내) — '키워드' 란
promotional-text.txt 프로모션 텍스트 (170자 이내, 심사 없이 수정 가능)
whats-new-1.0.txt 버전 1.0 '새로운 기능'
subscription-info.txt 인앱 상품 3종 메타데이터 + 자동 갱신 고지 + 등록 체크리스트
Screenshots/
iphone-6.9/{ko,en,ja}/ 아이폰 6.9" 원본 (1320×2868px — iPhone 17 Pro Max 시뮬레이터)
ipad-13/{ko,en,ja}/ 아이패드 13" 원본 (2064×2752px — iPad Pro 13"(M5) 시뮬레이터)
watch/{ko,en,ja}/ 애플워치 슬롯용 (416×496px — Series 11 46mm. 워치 앱이 있는 앱은 워치 스크린샷 필수)
framed-iphone-6.9/… ★ 업로드 권장: 홍보 문구+브랜드 배경 합성판 (같은 캔버스 크기라 ASC에 그대로)
framed-ipad-13/… ★ 업로드 권장: 〃 (원본은 예비/재합성 소스로 보관)
tools/
frame_screenshots.swift 합성 도구 — `swift Marketing/tools/frame_screenshots.swift` (저장소 루트에서).
문구·색은 파일 상단에서 수정, 원본을 다시 찍으면 이 도구만 재실행하면 됨
- 스크린샷: 아이폰 4장 = 모음 / 목표 / 타임테이블 / 주간 통계, 아이패드 4장 = 모음(사이드바) / 일기 달력 / 하루 정리 / 펜슬 노트, 워치 1장 = 앱 첫 화면(측정 중·즐겨찾기·꼬리표)
- ASC는 6.9″(아이폰)·13″(아이패드)·워치 한 세트씩 필수 — 나머지 크기는 자동 축소 적용
- 상태바는 9:41·배터리 100%로 오버라이드된 상태로 촬영 (워치 시뮬레이터는 오버라이드 미지원 — 실제 시각 표시)
- 알려진 티: iPad 상태바의 날짜 문자열은 시뮬레이터 시스템 언어(한국어)를 따름 — 앱 런치 인자로는 못 바꾸는 영역. 아이폰은 시간만 표시라 무관. 완벽을 원하면 시뮬 시스템 언어 변경 후 재촬영
- 문구 오버레이 규정: Apple은 스크린샷에 마케팅 문구·배경 합성을 허용(실제 앱 화면이 반영되어 있으면 됨) — framed 세트는 이 관행을 따른 것
스크린샷 재생성 방법
데모 데이터 이름·메모는 String(localized:)라 실행 로케일을 따른다(DebugSeed). 로케일마다 앱을 지우고 새로 시드해야 그 언어의 데이터가 들어간다.
# 0) Debug 빌드 후 앱 경로
APP=$(find ~/Library/Developer/Xcode/DerivedData/Haru_Danim-*/Build/Products/Debug-iphonesimulator -maxdepth 1 -name "Haru_Danim.app" | head -1)
IPHONE=DB9D0281-123D-425D-9547-10CFF7946733 # iPhone 17 Pro Max (6.9")
IPAD=39E5A4BE-9082-47AF-B6E4-1B9E8D271681 # iPad Pro 13-inch (M5)
# 1) 부팅 + 상태바 오버라이드 (기기당 1회)
xcrun simctl boot $IPHONE; xcrun simctl status_bar $IPHONE override --time "9:41" --batteryState charged --batteryLevel 100 --wifiBars 3 --cellularBars 4
# 2) 로케일마다: 지우고 → 설치 → 시드와 함께 화면별 콜드 스타트 → 스크린샷
# (로케일: ko_KR / en_US / ja_JP)
xcrun simctl uninstall $IPHONE com.yechan.HaruDanim && xcrun simctl install $IPHONE "$APP"
xcrun simctl launch $IPHONE com.yechan.HaruDanim -seedDemo YES -premium YES -AppleLanguages "(en)" -AppleLocale en_US
xcrun simctl io $IPHONE screenshot Marketing/Screenshots/iphone-6.9/en/01-main.png
# 이후 화면은 terminate 후 같은 로케일로: -startTab goal / -startTab history -historyMode timetable / -startTab stats -statSpan week
# 아이패드 일기: 첫 실행 -startTab diary -diarySeed YES (달력에서 시드) → 이후 -diaryOpenToday YES (+-diaryPage 1 = 노트)
워치 스크린샷 (페어링 아이콘 없는 깨끗한 상태바로 찍는 법)
페어링 시뮬레이터는 상태바에 빨간 '아이폰 연결 끊김' 아이콘이 떠서 스토어용으로 부적합. 페어링 워치가 받은 스냅숏 캐시(App Group plist)를 비페어링 워치 시뮬레이터로 복사해 찍는다:
WA=8B57A70E-... # 페어링 워치 (iPhone 17 Pro와 페어)
MW=0A2CB37C-A755-4784-9D14-C7AB8FD72C3E # 'MarketingWatch' — 비페어링 Series 11 46mm (없으면 simctl create)
# 로케일마다: ①아이폰 재설치+시드(해당 로케일) ②페어링 워치 앱 재설치+실행(스냅숏 수신·캐시) 후 종료
# ③MW를 shutdown한 상태에서 페어링 워치의 group.com.yechan.HaruDanim.plist를 MW의 같은 경로로 복사
# (cfprefsd 캐시 때문에 반드시 종료 상태에서 — 부팅 중 복사하면 반영 안 됨)
# ④MW 부팅 → 워치 앱을 -AppleLanguages "(로케일)"로 실행 → 스크린샷
# 주의: 아이폰 앱을 삭제하면 페어링 워치의 워치 앱도 함께 삭제됨 — 로케일마다 워치 앱 재설치 필요
출시 절차 체크리스트 (계좌 승인 이후 → 출시 — 2026-07-23 상세화. 상품 메타는 subscription-info.txt)
✅ 2026-07-28: 아래 절차 전부 완료 — 버전 1.0 App Store 출시됨. 이 체크리스트는 절차 기록으로 유지. 실제와 달랐던 점 2가지: ①IAP 심사용 스크린샷은 기기 규격이 아니라 640×920만 통과 ②신형 ASC는 버전 페이지의 인앱 섹션 대신 각 항목의 "심사에 추가"로 하나의 제출 초안에 담는 방식(첫 IAP는 앱 버전·구독 그룹과 함께). 인앱 무료 지급은 프로모션 코드 폐지(2026-03) 이후 특가 코드(Offer Code) 사용.
⏳ = 승인·처리 대기 구간. ②~⑥은 계좌 승인 대기 중에도 미리 가능(단 ⑥ 인앱 상품·가격은 유료 앱 계약 활성이 선행 조건일 수 있음). ASC 화면 구성은 수시로 바뀌므로 메뉴 위치가 다르면 항목 이름으로 찾을 것. 수수료·세무 등 금액이 걸린 내용은 ASC 안내문으로 최종 확인 권장.
① 유료 앱 계약 활성 (⏳ 계좌 승인 대기 → 활성)
- appstoreconnect.apple.com → 비즈니스(구 '계약, 세금 및 은행 업무') → 유료 앱(Paid Apps) 계약이 활성(Active) 인지 확인 (계좌 승인 후 몇 시간~며칠)
- 같은 곳에서 한국 전자상거래법 판매자 정보 입력: 사업자등록번호·통신판매업 신고번호(2026-07-22 신고 완료) — 한국 스토어 앱 페이지에 표시됨
- 계약 활성 직후 소규모 사업자 프로그램(수수료 30%→15%) 신청: developer.apple.com/kr/app-store/small-business-program/ → Account Holder로 등록. ⏳ 승인 며칠, 할인은 승인 시점부터(소급 없음으로 알려짐 — 신청 페이지에서 확인)
② CloudKit 프로덕션 스키마 배포 (심사 제출 전 필수 — TestFlight 설치 전에)
- icloud.developer.apple.com → 컨테이너
iCloud.com.yechan.HaruDanim→ Development 환경 Schema → Record Types에 CD_ 접두 타입 전부(특히 최신CD_DiaryTemplate) 있는지 확인 (없으면 개발 빌드 실기기에서 iCloud 토글 켜고 데이터 조작해 생성) - Deploy Schema Changes… → Production 실행 → Production 환경에서 동일하게 보이는지 확인
- ⚠️ TestFlight/App Store 빌드는 프로덕션 환경을 쓴다 — 미배포 시 출시 빌드에서 iCloud 동기화가 통째로 실패
③ ASC 앱 생성
- 앱 → + → 신규 앱: iOS / 이름 하루 다님(중복 시 "하루 다님 - 습관·시간 기록" 식 조정) / 기본 언어 한국어 / 번들 ID
com.yechan.HaruDanim/ SKUharudanim-ios
④ 앱 정보·개인정보·가격
- 앱 정보: 카테고리 기본 생산성·보조 라이프스타일 / 콘텐츠 권한 제3자 콘텐츠 없음 / 연령 등급 설문 전부 없음 → 4+
- 개인정보 처리방침 URL:
https://github.com/notalentprogrammer/HaruDanim/blob/main/PRIVACY.md/ EULA는 비워둠(=Apple 표준 EULA, 결제 화면 링크와 일치) - 현지화 추가(영어(미국)·일본어) — 언어별 앱 이름: ko 하루 다님 / en·ja Haru Danim
- 앱 개인정보 보호: "데이터 수집 안 함" 선택 후 게시 (PrivacyInfo.xcprivacy 4개와 일치)
- 가격 및 사용 가능 여부: 무료, 국가 전체(최소 ko·us·jp 확인)
⑤ 버전 1.0 페이지 (언어 ko/en/ja마다 전환하며 입력)
- 스크린샷: iPhone 6.9″ =
Screenshots/framed-iphone-6.9/<언어>/01~044장 / iPad 13″ =framed-ipad-13/<언어>/01~044장 / Apple Watch =watch/<언어>/01-main.png1장(워치 앱 있는 앱은 필수) - 프로모션 텍스트 = promotional-text.txt / 설명 = description-<언어>.txt / 키워드 = keywords.txt 해당 줄 / 지원 URL =
https://github.com/notalentprogrammer/HaruDanim - App Review 정보: 연락처 + 로그인 필요 없음 체크 + 메모(계정 없음·프리미엄은 설정 → 프리미엄에서 샌드박스 구매 가능·약관 링크는 결제 화면과 설명에 있음·일기는 iPad 전용 펜슬 지원)
- 출시 방식: 심사 통과 후 자동 출시(또는 수동)
⑥ 인앱 상품 3종 등록 (product ID는 subscription-info.txt에서 복사 — 오타 나면 앱이 상품을 못 불러옴)
- 수익화 → 구독: 그룹
HaruDanim Premium(현지화 프리미엄/Premium/プレミアム) → 그룹 안에 monthly(1개월·₩5,000)·yearly(1년·₩50,000) — 둘은 같은 등급(레벨 1) (월↔년 전환이 업그레이드 취급되게). 가격은 임시가, 등록 시점 최종 결정 - 수익화 → 앱 내 구입: 비소모성 lifetime(₩80,000)
- 각 상품 ko/en/ja 현지화 입력. 심사용 스크린샷 란은 ⑧까지 비워둠("메타데이터 누락" 상태가 정상)
⑦ 아카이브 → 업로드 (⏳ 처리 10~60분)
- Xcode 스킴
Haru_Danim+ 대상 Any iOS Device (arm64) / 4개 타깃 버전 1.0·빌드 일치 확인(워치 버전 불일치 시 업로드 거부) - Product → Archive → Organizer → Distribute App → App Store Connect → Upload (자동 서명 그대로. aps-environment는 배포 서명에서 자동 production)
- ⏳ 처리 완료 메일 후 TestFlight 탭에 빌드 등장. 수출 규정 질문 없음(
ITSAppUsesNonExemptEncryption=NO등록됨). 재업로드는 빌드 번호 증가 필수
⑧ TestFlight 실기기 확인 (내부 테스터는 베타 심사 불필요)
- TestFlight 탭 → 내부 테스팅 그룹 생성 → 본인 추가 → 빌드 지정 → 기기 TestFlight 앱에서 설치
- 결제 화면 상품 3종 로드(⑥ 반영까지 몇 시간 걸릴 수 있음)·구매·복원 / iCloud 동기화 2기기 왕복(=② 프로덕션 검증) / 위젯·워치·일기 잠금·펜슬
- 결제 화면(설정 → 프리미엄, 상품 3종 보이는 상태) 실기기 스크린샷 캡처 → ⑨에서 사용
⑨ IAP 심사 스크린샷 첨부
- 상품 3종 각각 심사 정보 → 스크린샷에 ⑧ 캡처 업로드(3종 동일 이미지 재사용 가능) → 상태 "제출 준비 완료" 확인
⑩ 심사 제출 (⏳ 보통 24~48시간, 첫 앱은 더 걸릴 수 있음)
- 버전 1.0 페이지 → 빌드 선택 + 인앱 구입 및 구독 섹션에 상품 3종 첨부(신규 IAP는 단독 심사 불가 — 빼먹으면 앱만 승인되고 결제가 빈 화면) → 심사를 위해 추가 → 제출
- 거절 시 해결 센터에서 사유 확인 → 소명 또는 수정 재제출 (복원 버튼·약관 링크·자동 갱신 고지는 이미 갖춤)
⑪ 승인 → 출시 → 직후
- 자동 출시면 승인 즉시 전파(전 세계 반영 2~24시간), 수동이면 "이 버전 출시" 버튼
- 스토어 다운로드로 첫 실행·결제 화면 로드 확인 / 소규모 사업자 승인 여부 / 한국 스토어 사업자 정보 표시 확인
- 다음 버전부터: 1.1 + "새로운 기능" 작성, IAP 첨부 불필요(이미 승인됨)