데이터 유형

Google 피트니스는 com.google 네임스페이스 아래에 건강 및 웰니스 데이터 유형을 제공합니다.

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

  • 즉각적인 읽기 또는 관찰
  • 시간 간격 동안의 통계가 포함된 집계

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

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

데이터 유형 그룹

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

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

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

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

데이터 유형 사용

Android

Android에서 데이터 유형은 DataType 클래스의 공개 필드로 정의됩니다. 데이터 유형으로 Fitness API를 호출하는 방법은 달성하려는 목표에 따라 다릅니다.

  • 데이터를 기록하려면 Recording API를 사용하여 녹화할 각 데이터 유형에 관한 구독을 만듭니다.
  • 데이터를 읽으려면 History API를 사용하여 각 데이터 유형에 대한 읽기 요청을 제출합니다.
  • 과거의 과거 데이터를 삽입하려면 History API를 사용하여 각 데이터 유형에 대한 삽입 요청을 제출합니다.
  • 세션을 만들려면 Sessions API를 사용하여 세션 메타데이터로 데이터를 삽입하거나 기록합니다.

즉각적인 DataType 객체의 데이터 포인트를 만들려면 올바른 형식으로 값을 할당합니다. 다음 예는 음식 항목을 문자열로 할당하고, 식사 유형을 Field 클래스의 상수로, 영양 함량을 매핑된 부동 소수점 값으로 할당하는 방법을 보여줍니다.

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용 앱 권한 관련 권장사항에 대해 자세히 알아보세요.