- HealthMetric 8종(표준 단위·표기) + HealthStore(HK 조회: 누적 통계·스탠드·마음챙김· 수면 구간[합집합 병합, 깨어난 날 귀속 — plan §3.4 규칙]) + HealthCache(App Group, 지표×dayKey, 400일 보존 — 5.1.3 준수: CloudKit 비저장) - 모음 탭 건강 섹션(타일 줄+접기·연결 CTA[명시적 탭 권한]·안내 시트[사용자 요구 가이드]· 지표 선택 시트[체크+드래그 순서]) — actionGrid·레이아웃 금지구역 무접촉, 편집 모드 숨김 - 3섹션(즐겨찾기·나머지·건강) 순서 렌더러 + 설정 탭 표시 토글·순서 화면(기기 로컬) - HealthKit 엔타이틀먼트(iOS 앱만)·NSHealthShareUsageDescription, 전체 초기화에 건강 키·캐시 청소 추가 - 검증: Debug/Store 빌드, 자가 검증 106건 ALL PASS(26.5+18.5), 시각 QA 7장 (타일·순서·설정·안내·지표·CTA·18.5 빈 상태). 신규 인자 3종 §14 기록 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WtZwRRjbtM9pZJDM4FkTq6
32 lines
2.0 KiB
Plaintext
32 lines
2.0 KiB
Plaintext
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<!-- CloudKit 무음 푸시 수신용 — 다른 기기의 변경을 즉시 가져오기(import) 위해 필수.
|
|
이 모드가 없으면 앱 실행/포그라운드 복귀 때만 가져오기가 일어나
|
|
iPad·iPhone 간 측정 시작/종료가 화면·새로고침에 반영되지 않았다.
|
|
나머지 Info.plist 키는 GENERATE_INFOPLIST_FILE=YES가 생성해 이 파일과 병합한다. -->
|
|
<key>UIBackgroundModes</key>
|
|
<array>
|
|
<string>remote-notification</string>
|
|
</array>
|
|
<!-- 수출 규정: OS 표준 암호화(HTTPS·iCloud)만 사용 — 면제 대상 선언으로
|
|
빌드 업로드 때마다 뜨는 규정 준수 질문을 생략한다 -->
|
|
<key>ITSAppUsesNonExemptEncryption</key>
|
|
<false/>
|
|
<!-- 일기 잠금(설정 → 일기, DiaryLock): Face ID 사용 사유 — 이 키가 없으면
|
|
Face ID 기기에서 인증 시도가 거부된다. Touch ID·암호는 별도 키 불필요 -->
|
|
<key>NSFaceIDUsageDescription</key>
|
|
<string>일기 잠금을 해제하는 데 사용돼요.</string>
|
|
<!-- 건강 데이터 읽기 사유 (1.5 — 모음 탭 타일·건강 다짐). 읽기 전용이며
|
|
값은 기기 밖으로 전송·저장되지 않는다 (심사 5.1.3, PRIVACY.md 건강 문단 참고) -->
|
|
<key>NSHealthShareUsageDescription</key>
|
|
<string>걸음·운동·수면 같은 건강 데이터를 앱에서 보여주고 다짐 달성 계산에 쓰기 위해 읽어요. 데이터는 이 기기 밖으로 나가지 않아요.</string>
|
|
<!-- CFBundleName(맥 메뉴 막대 이름): 생성 Info.plist가 PRODUCT_NAME("Haru_Danim")으로
|
|
항상 덮어써 이 파일에 넣어도 무효(검증됨). 실제 표시는 언어별 InfoPlist.strings
|
|
(IOS/InfoPlist.xcstrings의 CFBundleName — ko 하루 다님 / en·ja Haru Danim)가 결정하고,
|
|
미지원 언어도 개발 언어(ko)로 폴백되므로 원시값이 노출될 일은 없다 -->
|
|
|
|
</dict>
|
|
</plist>
|