- 홍보 문구 합성판 추가 — 브랜드 배경(웜 화이트→그린 그라데이션) + 헤드라인/서브 문구(ko/en/ja, 화면별 8종) + 골드 포인트 바 + 둥근 모서리 카드(그림자·헤어라인)로 합성. 캔버스는 ASC 규격 그대로(1320×2868 / 2064×2752)라 framed 세트를 바로 업로드 가능 — 원본 세트는 예비·재합성 소스로 유지 - Marketing/tools/frame_screenshots.swift — AppKit 기반 합성 도구(재현 가능): 문구·색 상단 정의, 텍스트는 폭 맞춤 자동 축소, 원본 재촬영 후 재실행만 하면 됨. 워치는 캔버스가 작아 원본 유지(관행) - README: framed 우선 업로드 안내 + 문구 오버레이 규정 메모 + iPad 상태바 날짜(시뮬 시스템 언어) 알려진 티 기록 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013yKDMhuF39GVYy3FMcGHh7
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 "(로케일)"로 실행 → 스크린샷
# 주의: 아이폰 앱을 삭제하면 페어링 워치의 워치 앱도 함께 삭제됨 — 로케일마다 워치 앱 재설치 필요
등록일 체크리스트 (요약 — 상세는 subscription-info.txt)
- 유료 앱 계약 + 소규모 사업자 프로그램
- 앱 정보: 설명·키워드·프로모션 텍스트·스크린샷 (ko 기본 + en/ja 현지화)
- 개인정보처리방침 URL 입력 + '앱 개인정보 보호' = 데이터 수집 안 함
- 인앱 상품 3종 등록 (product ID는 subscription-info.txt와 코드가 일치해야 함)
- CloudKit 대시보드 → 프로덕션 스키마 배포 (심사 제출 전 필수)
- TestFlight → 심사 제출