삼성 헬스 Data SDK

easyhooon·2026년 1월 28일
post-thumbnail

서두

삼성 헬스 Data SDK를 통한 건강 데이터 연동 작업을 하면서 알게된 내용들을 복습 차원에서 정리해보려고 한다.

본론

왜 헬스커넥트 대신 삼성 헬스 SDK?

"Android 공식 API인 헬스커넥트가 있는데 굳이?" 싶을 수 있지만, 국내 시장처럼 삼성 기기 점유율이 압도적인 환경에서는 오히려 삼성 헬스 SDK가 더 실용적인 선택일 수 있다.

vs 헬스커넥트

삼성 헬스 SDK헬스커넥트
지원 기기삼성 only Android 전체
파트너쉽필요불필요
권한 시스템삼성 헬스 앱 내 자체 관리Android 표준 권한
영구 거부없음있음 (2회 거부 시)
구현 난이도상대적으로 단순권한 분기 처리 복잡

1. 데이터 동기화 이슈 없음

헬스커넥트는 삼성헬스 앱이 헬스커넥트에 데이터를 동기화해줘야 접근 가능하며, 이때 동기화 타이밍 문제(누락/지연)가 발생할 수 있다.

삼성헬스 SDK는 삼성 헬스 원본 데이터에 직접 접근하므로 이러한 문제가 발생하지 않는다.

2. 더 풍부한 삼성 기기 데이터

갤럭시 워치 전용 데이터인 수면 단계, 스트레스 등의 접근이 가능하다.

헬스커넥트의 경우 삼성 헬스, 구글 피트니스 등의 공통 스펙만을 지원하여 삼성 특화 데이터의 누락이 발생할 수 있다.

3. 권한 UX 단순화

이 부분이 좀 신기했는데, 기존 Android의 복잡한 OS 권한 처리와 달리, Manifest에 별도의 헬스 관련 권한을 선언할 필요도 없고, 영구 거부 케이스에 대한 처리도 불필요하다.

OS 권한 팝업을 사용하는 방식이 아닌, 삼성 헬스 자체 권한 시스템을 사용하여(삼성헬스 앱 내부에서 관리), 이전에 권한을 허용/거부 했는지와 관계없이 매번 권한 팝업을 띄울 수 있다.

따라서 별도로 설정 이동, 권한 사용 이유를 알리는 팝업등을 구현할 필요가 없어 보일러플레이트가 줄어든다.

한 가지 주의할 점은, 권한 상태가 삼성 헬스 앱 내부에서 관리되기 때문에 앱을 제거하거나 앱 설정 → 데이터 삭제를 해도 기존에 허용/거절한 권한 상태가 초기화되지 않고 그대로 유지된다는 점이다.

개발/테스트 중 권한 상태를 초기화하려면 삼성 헬스 앱 설정에서 직접 권한을 변경해야 한다.

권한 팝업이 화면에 띄워진 상태에서 아무런 건강 권한(ex. 걸음 수, 운동)을 체크하지 않고 확인을 누르거나, 거부를 누를 경우 허용된 건강 권한 배열이 빈 배열로 반환된다. 따라서 권한 허용 거부와 건강 권한 전부 비활성화 등도 간단하게 판단하여 처리할 수 있다

삼성 헬스 권한 처리

  • PermissionManager로 요청 → 삼성헬스 앱이 다이얼로그 표시
  • 거부해도 재요청 가능 (영구 거부 개념 없음)
  • 사용자가 삼성헬스 앱 설정에서 직접 차단한 경우만 별도 처리 필요
val permissionManager = PermissionManager(healthDataStore)
permissionManager.requestPermissions(permissions, activity)

헬스커넥트 권한 처리

  • Android 표준 권한 플로우
  • 2회 거부 → 영구 거부
  • shouldShowRequestPermissionRationale() 체크 필요
  • 영구 거부 시 설정 화면으로 유도해야 함
// 영구 거부 분기 처리 필요
if (!shouldShowRequestPermissionRationale()) {
    // 설정으로 이동 유도
}

삼성 헬스 Data SDK 사용 방법

삼성 헬스 Data SDK는 Android 10 (API 29) 이상에서만 사용 가능

https://developer.samsung.com/health/data/process.html

  1. SDK 파일 다운로드
  2. 삼성헬스 개발자 모드 활성화
  3. SDK 를 사용하여 열심히 개발
  4. 파트너쉽 신청???

파트너쉽 신청

개발할때는 마음대로 사용이 가능하지만, 앱을 출시한 이후에도 삼성 헬스 SDK를 사용하려면 파트너쉽 신청 및 승인을 받아야만 한다. 아주 큰 진입 장벽

https://developer.samsung.com/health/partnerships

신청 절차

1. Verify Account & Additional Information

  • 회사 계정 및 가입시 입력한 정보 확인
  • 회사 산업군이 어디인지, 비즈니스 타입이 뭔지(B2B, B2C) 입력
  • 예상(추정) 매출 입력

그렇다... 아쉽지만 개인 앱에서는 사용할 수 없다...

2. App Information

  • 앱 이름, PackageName, 앱 설명, SHA-256 서명키, 출시/출시 예정일 등을 입력
  • SDK 사용 이유, 사용하려는 건강 DateType, 해당 DataType을 사용하려는 이유 입력

그리고...

Data Flow Diagram 첨부...매우 귀찮
앱 내에서 사용하는 화면 스크린샷 첨부...

Data Flow Diagram의 경우 Samsung Health에 쌓여있는 어떤 타입의 데이터를 Data SDK를 통해 조회하고 이를 앱내 표시하며 서버에 저장하는 일련의 플로우를 Diagram 화하여 제출하면 된다.
AI의 도움을 받도록 하자.

3. Data Security

  • 삼성 헬스 SDK 데이터를 서드 파티와 공유하는지(예/아니오)
  • 앱이 지역 법규를 준수하는지/회사가 이전에 보안 위반을 저질른 적이 있는지(?) (예/아니오)

4. Samsung Representative Information

  • 대표자 정보 입력(이름, 직위, email, 전화번호 등)

5. Agreements & Submit Request Form

  • 동의 및 파트너쉽 신청 제출

심사 후 승인 완료

파트너쉽 신청의 복잡도의 따라 10~14 영업일이 소요될 수 있으니, 적어도 배포 예정일 2주 전에는 파트너쉽 신청을 할 필요가 있다.

파트너쉽 승인 이후 권한 추가 시

기존에 이미 파트너쉽에 승인된 상태라면, 이후 권한 추가시 파트너쉽 신청과 같은 별도의 신청 과정 없이 Samsung Health 공식 홈페이지내에 Support 탭내 문의를 올려 요청하면 된다.

어떤 앱에(PackageName), 어떤 권한(ex. Exercise/Read DataType)이 필요한지만 요청하면 경험상 영업일 기준 1~2일 내에 권한이 업데이트 되었다. 왜 그 권한을 추가적으로 사용해야하는지 등의 사유도 문의에 추가하면 도움이 되는 듯

그래서 삼성 헬스를 통해 운동 데이터를 어떻게 가져오는데?

'기능 구현을 위한 코드를 나열하고, 이를 하나하나 설명하는 것이 크게 의미가 있나?' 라는 생각이 드는 요즘이다.

따라서 코드 레벨로 하나하나 설명하기보단, 실제로 동작하는 앱을 만들어 레포지토리 링크를 공유하는게 낫다고 판단되어 샘플 앱을 구현해보았다.

https://github.com/easyhooon/SamsungHealthExample

삼성 헬스 Data SDK의 걸음 수, 운동 권한을 사용한 샘플 앱이며,

  • 권한 요청 및 허용된 권한 확인
  • 오늘의 걸음수/일주일 간의 걸음수
  • 특정 기간내에 운동 데이터(운동 타입, 운동 시간, 소모 칼로리, 심박수...etc) 동기화

기능들을 지원한다.

정리

타겟이 삼성 기기 한정 + 데이터 정합성 중요 → 삼성 헬스 SDK
범용 Android 지원 필요 → 헬스커넥트

삼성 헬스 SDK는 파트너쉽이라는 진입장벽이 있지만, 파트너쉽 승인만 된다면 이후 데이터를 받아오는 과정이나 권한 처리등이 헬스커넥트보다 훨씬 단순하고, 데이터 정합성도 보장이 가능하기에, 한국처럼 삼성 기기 점유율 높은 시장에선 충분히 고려할 만한 선택지라고 생각한다.

결론

삼성 헬스와 헬스커넥트의 차이에 대해 알아보고, 삼성 헬스를 사용하려고 할때 파트너쉽 신청시 작성해야하는 내용들, Data SDK를 사용하여 원하는 데이터를 동기화 하는 방법을 코드 레벨로(샘플 앱 레포지토리 링크로 대체) 확인할 수 있었다.

P.S

삼성 헬스 공식문서에서 권한을 어떻게 받아야할지, 데이터는 어떻게 조회해야할지 등 파악을 돕기 위한 코드랩을 제공한다.

https://developer.samsung.com/codelab#Health

삼성 헬스 개발자 모드를 활성화하여, 파트너쉽 신청 승인 없이도 데이터 조회등을 테스트 해볼 수 있으니 파트너쉽 신청 승인을 기다리면서 미리 한번 해보면 도움이 된다.

Android 공식문서 코드랩 처럼 마지막 페이지에 Complete Code를 다운받을 수 있으니, 전체 구현 코드 파악도 용이하다.

코드를 확인해보면 ViewModel, Repository, DataSource, Hilt를 통한 의존성 주입 등 모던한 구조를 띄고 있어, 그대로 가져다 사용해도 손색이 없을 듯 하다.

reference)
https://developer.samsung.com/health/data
https://developer.android.com/health-and-fitness/health-connect?hl=ko
https://developer.samsung.com/health/data/process.html
https://developer.samsung.com/health/data/faq.html
https://developer.samsung.com/health/data/guide/developer-mode.html
https://r1.community.samsung.com/t5/samsung-health/%EC%82%BC%EC%84%B1%ED%97%AC%EC%8A%A4-%ED%97%AC%EC%8A%A4%EC%BB%A4%EB%84%A5%ED%8A%B8-%EC%97%B0%EB%8F%99-%EC%98%A4%EB%A5%98-one-ui-7-%EB%B2%A0%ED%83%80/td-p/30878292

profile
실력은 고통의 총합이다. Android Developer

0개의 댓글