← ClaudeAtlas

health-datalisted

Health Connect(Android)와 HealthKit(iOS) 건강 데이터 수집/동기화/저장 종합 가이드. React Native(Expo), Swift, Kotlin, Web 환경에서의 구현 패턴과 실전 gotcha 포함. 심박수, 수면, 걸음, 활동 에너지 등 주요 데이터 타입별 처리법.
Dannykkh/skill-olympus · ★ 5 · AI & Automation · score 78
Install: claude install-skill Dannykkh/skill-olympus
# Health Data Integration Guide Health Connect(Android)와 HealthKit(iOS)를 활용한 건강 데이터 수집/동기화/저장 종합 가이드. React Native(Expo), Swift, Kotlin, Web 환경에서의 구현 패턴과 실전 gotcha 포함. 심박수, 수면, 걸음, 활동 에너지 등 주요 데이터 타입별 처리법. ## Trigger 다음 키워드에 자동 활성화: - "Health Connect", "HealthKit", "헬스커넥트", "헬스킷" - "심박수", "수면 데이터", "걸음 수", "heart rate", "sleep data", "steps" - "건강 데이터 동기화", "health sync", "백그라운드 동기화" - "HKAnchoredObjectQuery", "getChanges", "health permission" --- ## 핵심 개념: 건강 데이터는 "내 데이터"가 아니다 > 건강 데이터의 가장 큰 함정: **우리 앱이 데이터의 주인이 아니다.** Health Connect/HealthKit은 OS가 관리하는 **공유 저장소**입니다. 다른 앱이 데이터를 쓸 수 있고, 사용자가 직접 삭제할 수도 있습니다. ``` [워치/센서] → [Health Connect / HealthKit] → [우리 앱] → [백엔드 서버] → [DB] ↑ 다른 앱도 읽기/쓰기 ↑ 여기서부터 우리 책임 ↑ 사용자가 직접 삭제 가능 ``` **이것이 의미하는 것:** - 데이터가 갑자기 사라질 수 있다 (사용자 삭제, 앱 제거) - 같은 시간대에 다른 앱이 쓴 중복 데이터가 있을 수 있다 - 권한이 언제든 취소될 수 있다 - **증분 동기화(incremental sync)**가 필수 — 매번 전체를 다시 읽으면 비용 폭발 --- ## 상세 내용 이 스킬의 전체 내용(플랫폼 비교, 데이터 타입별 처리, 동기화 아키텍처, 권한 관리, 삭제 전파, 로컬 캐시, 워치 연동, 디버깅 가이드)은 글로벌 설치본을 참조하세요. 핵심 gotcha 요약: - Health Connect `DeletionChange`에 recordType 없음 → 데이터 타입별 별도 token 유지 - iOS `authorizationStatus()`는 read 권한을 정확히 알려주지 않음 - 심박수 raw 저장 시 파티셔닝 필수 (월 수만 row) - 수면 `sleepDate` 단위 upsert → 낮잠+밤잠 덮어쓰기 위험 - 걸음 수 `user+date` upsert → 워치+폰 데이터 덮어쓰기 위험 (deviceId 포함 필요) - 로그아웃 시 pending buffer 미삭제 → 다른 사용자 데이터 업로드 위험 - Observer Query + Background Delivery 함께 사용 필수 (iOS) - 동시 sync 방지: shared promise 패턴 ## Related Files | 파일 | 역할 | |------