데이터 유형

Google 피트니스는 com.google 네임스페이스에서 일련의 건강 및 웰빙 데이터 유형을 제공합니다.

데이터 유형은 데이터 포인트 내에 있는 값의 형식을 정의합니다. 데이터 포인트는 다음을 나타낼 수 있습니다.

  • 즉각적인 판독 또는 관찰
  • 특정 기간의 간격이 있는 집계

Google 피트니스는 즉각적인 관찰을 위한 데이터 유형과 집계 데이터의 데이터 유형을 정의합니다. 데이터 포인트는 데이터 유형 필드의 값과 타임스탬프 정보로 구성됩니다. 즉각적인 관찰을 나타내는 지점에는 타임스탬프가 포함되며 집계 데이터 유형의 포인트에는 간격의 시작 시간도 포함됩니다.

Google 피트니스를 사용하면 새로운 데이터 유형을 정의할 수도 있습니다.

데이터 유형 그룹

Google 피트니스의 데이터 유형은 다음과 같습니다.

공개 데이터 유형
플랫폼에서 제공하는 표준 데이터 유형에는 'com.google' 접두사가 있습니다. 예: com.google.step_count.delta 이러한 데이터 유형은 피트니스 활동, 수면, 영양 등 건강 및 웰빙 데이터의 즉각적인 측정값을 캡처합니다. 데이터를 쓰기한 앱에서만 읽을 수 있는 위치 데이터 유형을 제외한 모든 앱은 이러한 데이터 유형에 대한 읽기 및 쓰기와 관련된 권한을 요청할 수 있습니다.

자세한 내용은 다음을 참고하세요.

건강 데이터 유형
민감할 수 있는 데이터로 인해 액세스가 제한된 플랫폼에서 제공하는 데이터 유형입니다. 자세한 내용은 상태 데이터 유형을 참고하세요.
데이터 유형 집계
시간 또는 활동 유형별로 집계된 건강 정보를 읽는 데이터 유형 자세한 내용은 데이터 유형 집계를 참고하세요.
비공개 맞춤 데이터 유형
특정 앱에서 정의한 맞춤 데이터 유형입니다. 데이터 유형을 정의하는 앱만 이 유형의 데이터를 읽고 쓸 수 있습니다. 자세한 내용은 커스텀 데이터 유형을 참조하세요.

데이터 유형 사용

Android

Android에서 데이터 유형은 DataType 클래스의 공개 필드로 정의됩니다. 데이터 유형으로 피트니스 API를 호출하는 방법은 원하는 작업에 따라 다릅니다.

  • 데이터를 기록하려면 Recording API를 사용하여 녹화하려는 각 데이터 유형의 정기 결제를 만드세요.
  • 데이터를 읽으려면 History API를 사용하여 각 데이터 유형의 읽기 요청을 제출합니다.
  • 과거의 과거 데이터를 삽입하려면 History API를 사용하여 각 데이터 유형의 삽입 요청을 제출합니다.
  • 세션을 만들려면 Sessions API를 사용하여 세션 메타데이터로 데이터를 삽입하거나 기록하세요.

인스턴스 DataType 객체의 데이터 포인트를 만들려면 올바른 형식으로 값을 할당하세요. 다음 예에서는 음식 항목을 문자열로 할당하고, 식사 유형을 Field 클래스의 상수로 할당하고, 영양소 콘텐츠를 매핑된 float 값으로 할당하는 방법을 보여줍니다.

val nutritionSource = DataSource.Builder()
    .setDataType(DataType.TYPE_NUTRITION)
    ...
    .build()

val nutrients = mapOf(
    Field.NUTRIENT_TOTAL_FAT to 0.4f,
    Field.NUTRIENT_SODIUM to 1f,
    Field.NUTRIENT_POTASSIUM to 422f
)
val banana = DataPoint.builder(nutritionSource)
    .setTimestamp(now, TimeUnit.MILLISECONDS)
    .setField(Field.FIELD_FOOD_ITEM, "banana")
    .setField(Field.FIELD_MEAL_TYPE, Field.MEAL_TYPE_SNACK)
    .setField(Field.FIELD_NUTRIENTS, nutrients)
    .build()

앱에서 데이터 포인트를 설정한 후 History API를 사용하여 이전 데이터를 삽입하거나 읽거나 삭제할 수 있습니다.

REST

dataSources 리소스에는 각 데이터 소스의 데이터 유형 및 필드 목록이 포함됩니다. 데이터 소스를 만들 때 이러한 데이터 유형 중 하나를 지정하고 피트니스 저장소에서 데이터 소스를 가져올 때 데이터 유형 이름과 필드 목록을 가져올 수 있습니다.

예를 들어 데이터 소스 표현은 다음과 같이 데이터 유형을 지정합니다.

{
"dataStreamId": "exampleDataSourceId",
...
"dataType": {
  "name": "com.google.step_count.delta"
},
...
}

승인 범위

승인 범위는 사용자가 앱의 액세스를 승인할 수 있는 데이터 유형 그룹을 다룹니다. 사용자가 앱에서 액세스하려는 데이터 유형을 파악하는 데 도움이 됩니다. 또한 각 개별 데이터 유형을 승인할 필요 없이 앱에 해당 데이터 사용 권한을 더 쉽게 부여할 수 있습니다. 사용자는 앱을 다운로드하고 나면 이러한 권한을 부여합니다.

OAuth 범위 동의 화면의 예
그림 2.OAuth 범위 동의 화면

소수의 사용자를 대상으로 앱을 테스트한 후 앱을 출시하기 전에 이러한 데이터 유형과 관련된 범위를 기반으로 인증을 요청해야 합니다. 위에 연결된 데이터 유형 페이지를 읽고 각 데이터 유형에 적용되는 범위를 알아보세요.

예를 들어 앱이 혈압 쓰기를 읽고 써야 한다면 읽기와 쓰기를 모두 실행한다고 선언하고 두 범위를 모두 요청해야 합니다. Google 피트니스 플랫폼에만 혈압 데이터만 쓰는 경우 쓰기 범위만 요청하면 됩니다.

책임감 있게 데이터 유형을 선택하세요. 앱에 필요할 수도 있는 모든 데이터 유형을 요청하지 마세요. 지정된 유형에 따라 사용자에게 권한을 부여하라는 메시지가 표시됩니다. 사용자가 액세스 권한을 부여할 가능성이 높아지도록 앱에 필요한 데이터 유형만 요청합니다. 사용자는 제한되고 명확하게 설명된 범위에 대한 액세스 권한을 더 쉽게 부여합니다.

이 표를 사용하여 앱이 액세스해야 하는 범위가 민감하거나 제한되어 있는지 확인합니다. 따라야 할 확인 단계는 다음과 같습니다.

범위 설명 카테고리
https://www.googleapis.com/auth/fitness.activity.read Google 피트니스 플랫폼에서 활동 데이터 읽기 제한됨
https://www.googleapis.com/auth/fitness.activity.write Google 피트니스 플랫폼에 활동 데이터 쓰기 제한됨
https://www.googleapis.com/auth/fitness.blood_glucose.read Google 피트니스 플랫폼에서 혈당 데이터 읽기 제한됨
https://www.googleapis.com/auth/fitness.blood_glucose.write Google 피트니스 플랫폼에 혈당 데이터 작성 제한됨
https://www.googleapis.com/auth/fitness.blood_pressure.read Google 피트니스 플랫폼에서 혈압 데이터 읽기 제한됨
https://www.googleapis.com/auth/fitness.blood_pressure.write Google 피트니스 플랫폼에 혈압 데이터 쓰기 제한됨
https://www.googleapis.com/auth/fitness.body.read Google 피트니스 플랫폼에서 신체 측정 데이터 (키, 체중, 체지방률)를 읽습니다. 제한됨
https://www.googleapis.com/auth/fitness.body.write Google 피트니스 플랫폼에 신체 측정 데이터 쓰기 제한됨
https://www.googleapis.com/auth/fitness.body_temperature.read Google 피트니스 플랫폼에서 체온 데이터 읽기 제한됨
https://www.googleapis.com/auth/fitness.body_temperature.write Google 피트니스 플랫폼에 체온 데이터를 작성합니다. 제한됨
https://www.googleapis.com/auth/fitness.heart_rate.read Google 피트니스 플랫폼에서 심박수 데이터 읽기 제한됨
https://www.googleapis.com/auth/fitness.heart_rate.write Google 피트니스 플랫폼에 심박수 데이터를 씁니다. 제한됨
https://www.googleapis.com/auth/fitness.location.read Google 피트니스 플랫폼에서 위치 데이터를 읽습니다. 제한됨
https://www.googleapis.com/auth/fitness.location.write Google 피트니스 플랫폼에 위치 데이터를 씁니다. 제한됨
https://www.googleapis.com/auth/fitness.nutrition.read Google 피트니스 플랫폼에서 영양 데이터를 읽습니다. 제한됨
https://www.googleapis.com/auth/fitness.nutrition.write Google 피트니스 플랫폼에 영양 데이터를 기록합니다. 제한됨
https://www.googleapis.com/auth/fitness.oxygen_saturation.read Google 피트니스 플랫폼에서 산소 포화도 데이터를 읽습니다. 제한됨
https://www.googleapis.com/auth/fitness.oxygen_saturation.write Google 피트니스 플랫폼에 산소 포화도 데이터 쓰기 제한됨
https://www.googleapis.com/auth/fitness.reproductive_health.read Google 피트니스 플랫폼에서 생식계 건강 데이터를 읽습니다. 제한됨
https://www.googleapis.com/auth/fitness.reproductive_health.write Google 피트니스 플랫폼에 생식계 건강 데이터를 작성합니다. 제한됨
https://www.googleapis.com/auth/fitness.sleep.read Google 피트니스 플랫폼에서 수면 데이터를 읽습니다. 제한됨
https://www.googleapis.com/auth/fitness.sleep.write Google 피트니스 플랫폼에 수면 데이터를 기록합니다. 제한됨

기존 앱에 새 범위 추가

새 범위를 요청하도록 앱을 업데이트할 때 (예: 새 수면 또는 심박수 범위를 추가하거나 읽기 범위를 추가하는 경우) 앱이 이러한 범위에 대한 액세스를 요청한다는 메시지가 표시되고 액세스 권한을 부여하거나 거부할 수 있습니다.

필요한 경우 사용자에게 리소스에 대한 승인을 요청하는 것이 좋습니다. 증분 승인 요청에 관한 가이드라인을 따릅니다.

사용자가 앱에서 이 데이터를 사용하는 이유/방법을 이해하면 사용자가 액세스 권한을 부여할 가능성이 높아집니다.

  • 사용자에게 이러한 범위를 묻는 메시지가 표시된다고 경고하거나 안내하는 화면을 추가하는 것이 좋습니다.
  • 사용자가 충분한 정보를 바탕으로 결정을 내릴 수 있도록 앱이 이러한 범위/데이터에 액세스를 요청하는 이유를 명확하게 설명합니다.

Android의 앱 권한 권장사항을 자세히 알아보세요.