본문 바로가기
STORAGE

플러터를 이용한 건강 데이터 추출 및 활용

2022. 4. 18. 09:45

플러터, 건강 데이터

건강은 우리 삶에 가장 관련이 깊은 키워드 중 하나가 되었습니다. 예전에는 상품이나 제품을 많이 생산하여 소비자에게 공급하였다면 요즘은 개인 맞춤 제품을 적게 생산하여 소비자에게 공급합니다. 이는 넘쳐나는 제품 속에서 소비자가 선택할 수 있는 선택지가 많아졌기 때문입니다. 이 트렌드는 건강 분야에도 똑같이 적용됩니다. 맞춤 식품, 과일 등 개인의 취향, 몸에 맞는 제품을 구매하여 섭취합니다. 이런 비즈니스 인사이트를 발견하여 최근 많은 회사가 추천 시스템을 도입하는 시도를 하고 있습니다. 

 

'맞춤 식품'이라는 인사이트를 발견하고 이것이 왜 필요한지 알았다면 어떻게 사업에 적용할 수 있을까요?

 

바로 앱을 통한 매력적인 정보 전달입니다. 회사와 고객 사이 최접점에 존재하는 앱은 충성 고객을 판가름하는 중요한 플랫폼입니다. 건강에 관심이 많은 사람에게 개인 건강 상태 지표를 깔끔한 UI를 통해 제공하며 맞춤 건강식품을 제공하면 건강에 관심이 많은 타겟을 대상으로 User Engagement(사용자 앱 참여도)를 높일 수 있습니다. 예를 들어 매주 걸음 수가 궁금하여 앱에 접속한 사용자가 해당 앱에서 맞춤 과일을 추천받아 구매로 이어질 수 있습니다.

 

이런 비즈니스 모델을 실제화하기 위해서는 어떤 것이 필요할까요?

 

위의 비즈니스 모델을 실제화하기 위해서는 앱 제작, 식품 빅데이터, 사용자 개인 건강 데이터가 필요합니다. 인실리코젠의 자회사인 D.iF는 오랜 기간 쌓아온 2,800만 건의 식품 빅데이터를 보유하고 있습니다. 이를 바탕으로 맞춤 과일 추천 앱, 과일궁합을 제작하고 있습니다.

 

오늘은 중요한 세 가지 요소 중에서 플러터를 통해 건강 데이터를 추출하는 방법을 소개하려고 합니다. 어렵지 않으니 천천히 아래의 단계를 따라가면 쉽게 건강 데이터를 추출할 수 있을 것입니다.

 

플러터로 건강 데이터 추출 전 알아야 할 것들

플러터로 건강 데이터를 추출하기 전에 알아야 할 것은 총 4가지가 있습니다.

 

  • iOS, AOS 모두 건강 데이터를 사용하기 위해서는 사용자 동의가 필수적입니다.
  • iOS에서는 건강 앱에서, 안드로이드에서는 구글 핏에서 가져올 수 있습니다. (삼성 헬스는 불가능합니다.)
  • 갤럭시 워치는 삼성 헬스와 연동됩니다. 워치와 구글 핏을 연동하기 위해서는 사용자가 유료 앱을 구매해야 합니다.
  • 안드로이드 사용자의 건강 데이터를 불러오기 위해서는 OAuth2 계정 발급이 필수입니다.

 

데이터 수집 방법 

Flutter를 이용하여 건강 데이터를 수집하려면 health 패키지를 사용해야 합니다.

1. pubspec.yaml에 이 패키지를 추가해주세요.
2. 그다음 Info.plist에 들어가서 아래 내용을 추가합니다.

 

<key>NSHealthShareUsageDescription</key>
<string>We will sync your data with the Apple Health app to give you better insights</string>
<key>NSHealthUpdateUsageDescription</key>
<string>We will sync your data with the Apple Health app to give you better insights</string>

 

3. Xcode에 들어가서 해당 workspace에 들어가서 Target Runners의 Singing&Capabilities로 이동합니다.
4. 해당 페이지에서 왼쪽 상단에 있는 +버튼을 클릭합니다. (아래 사진을 참고해주세요)

 

플러터&#44; 앱 개발

5. Capabilities에 health를 검색하여 적용합니다.

 

플러터&#44; 앱 개발

6. 터미널을 열고 cd ~/.android/ 를 입력합니다.
7. keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android 를 입력합니다.
8. 해당 SHA-1 값 BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:75 (예시)를 추출합니다.
9. Google Cloud Platform에서 API 및 서비스에서 사용자 인증 정보로 이동합니다.

 

플러터&#44; 앱 개발

10. 터미널에서 발급받은 SHA-1을 바탕으로 OAuth2를 발급받습니다.

 

플러터&#44; 앱 개발

11. Google Cloud Platform에서 API 및 서비스에서 OAuth 동의 화면으로 이동합니다.

 

플러터&#44; 앱 개발

12. 상태를 테스트로 바꾸고 안드로이드 사용자 중에서 테스트할 유저를 등록합니다. (여기에 등록된 테스터만 건강 데이터가 정상적으로 불러와집니다)

 

플러터&#44; 앱 개발

13. 다시 플러터 프로젝트로 이동하여 AndroidManifest.xml에 들어가 <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>를 삽입합니다.
14. pubspeck.yaml에 permission_handler를 등록합니다.
15. 메인 클래스 혹은 Splash 클래스에 await Permission.activityRecognition.request();를 넣습니다. 이걸 넣지 않으면 앱 심사에서 통과되지 않습니다.
16. android/gradle.properties에 들어가서 아래를 추가합니다.

org.gradle.jvmargs=-Xmx1536M
android.enableJetifier=true
android.useAndroidX=true

17. 위에 프로세스를 모두 진행하면 기본 설정이 모두 완료되었습니다. 패키지 사용법은 링크를 참고해주세요.  

 

건강 데이터 사용 시 유의점

1. 건강 데이터는 개인 정보로 취급되기 때문에 앱 심사 시 매우 까다롭게 심사됩니다. 따라서 꼭 사용자 동의 과정을 거치기를 바랍니다.

2. OAuth2 계정을 발급받지 않아도 가끔 구글 핏에서 데이터가 넘어올 때가 있습니다. 하지만 랜덤하게 넘어오기 때문에 테스트 중이면 GCP에서 OAuth2 동의 화면에 상태를 테스트로 바꾸고 테스트 계정을 추가하기를 바랍니다.

3. 플레이 스토어에 앱을 배포하기 위해서 꼭 GCP에서 상태를 외부로 배포로 바꾸고 구글 핏 측에 심사 받기 바랍니다. 이 과정은 3~5일 정도 소요됩니다.

 


EDITOR

구태훈

FLEX Dept. · Flutter App Developer ​

 

댓글