세션을 통해 사용자는 자신이 완료한 주요 활동의 목록을 쉽고 빠르게 확인할 수 있습니다. Google 피트니스 앱 저널 페이지에 표시됩니다. 예를 들어 호흡 세션, 걷기, 달리기, 야간 수면이 각각 세션의 예입니다.
세션은 활동 중에 수집된 특정 기간의 데이터 세트를 그룹화합니다. 예를 들어 사용자가 3km 달리기를 시작하고 완료한 시점을 추적하면 세션이 생성될 수 있으며 이 시간 내의 모든 피트니스 데이터 (예: 걸음 수, 속도, 이동 거리)가 이 세션과 연결됩니다.
세션 자체에는 활동에 관한 세부정보가 포함되지 않습니다. 데이터 세트에 있습니다. 세션의 속성은 다음과 같습니다.
- 설명이 포함된 친숙한 이름 (예: '아침 달리기')
- 설명
- 고유 식별자
- 캡처하는 활동의 유형 (예: 달리기)
세션 사용의 이점
- 사용자에게 유용: 세션은 사용자에게 의미 있는 방식으로 활동 데이터와 운동을 구성하는 데 도움이 됩니다. Google 피트니스 앱의 일지 페이지에서 하루의 모든 활동을 확인할 수 있습니다.
- 일관된 사용자 환경: 앱 또는 호환 기기에서 활동 추적 (사용자가 활동을 시작하고 중지할 수 있음)을 허용하는 경우 이러한 운동 세션을 통해 사용자는 두 앱 모두에서 활동을 확인할 수 있습니다.
- 더욱 완전한 데이터: Google 피트니스는 세션 정보를 보완하고 보강하기 위해 여러 소스의 데이터도 병합합니다. 이를 통해 사용자는 자신의 활동을 더 완전하게 파악할 수 있습니다.
- Google 피트니스 플랫폼 활용: 사용자가 활동을 추적하지 않거나 앱에서 추적을 지원하지 않는 경우에도 Google 피트니스에서 세션을 읽을 수 있습니다. 자체 스키마 및 저장소를 구현하지 않고도 피트니스 스토어에서 자세한 데이터 또는 합산 데이터를 쿼리하고 사용 가능한 세션을 찾을 수 있습니다.
- 사용자 참여 증가: 이용 가능한 세션과 이 세션을 만든 앱을 사용자에게 표시할 수 있습니다. 이런 식으로 다른 피트니스 앱과 상호작용하면 사용자 참여도를 높일 수 있습니다.
세션에 대한 사용자 승인 가져오기
세션을 읽거나 쓰려면 앱에서 사용자의 권한을 가져와야 합니다. 세션에 대한 액세스는 데이터 유형과 동일한 승인 범위를 사용하므로 다음과 같이 요청해야 합니다.
Android
FitnessOptions
의 적절한 메서드를 사용하여 앱에서 액세스해야 하는 세션 유형을 지정합니다.
예를 들어 달리기와 관련된 세션을 읽으려면 다음을 선택하면 됩니다.
val fitnessOptions = FitnessOptions.builder()
.accessActivitySessions(FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_SPEED, FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_LOCATION_SAMPLE, FitnessOptions.ACCESS_READ)
.build()
이 예에서는 앱이 활동 세션 메타데이터에 액세스하려고 함을 지정하고 이러한 세션 내에서 읽으려는 데이터 유형도 지정합니다. 이 예에서는 심박수, 속도, 위치 데이터 유형을 사용합니다.
REST
요청 범위는 다음과 같습니다.
- 수면 활동 유형이 있는 세션:
https://www.googleapis.com/auth/fitness.sleep.read
https://www.googleapis.com/auth/fitness.sleep.write
- 다른 모든 세션:
https://www.googleapis.com/auth/fitness.activity.read
https://www.googleapis.com/auth/fitness.activity.write
세션 사용
Android
Sessions API를 사용하여 다음 작업을 할 수 있습니다.
- 실시간으로 세션 만들기
- 피트니스 스토어에 세션 삽입
- 운동 중 일시 정지를 지원하는 활동 세그먼트 삽입
- 세션과 연결된 데이터 세트를 읽습니다.
- 다른 앱을 실행하여 앱에서 만든 세션에 관한 정보 표시
- 다른 앱이 세션을 시작할 때 인텐트 수신
REST
Sessions API를 사용하여 다음 작업을 할 수 있습니다.
- 실시간으로 세션 만들기
- 피트니스 스토어에 세션 삽입
- 운동 중 일시 정지를 지원하는 활동 세그먼트 삽입
- 세션과 연결된 데이터 세트를 읽습니다.
데이터 세트 및 세그먼트가 세션과 상호작용하는 방식
Google 피트니스에서:
- 데이터 세트는 특정 기간 동안 특정 데이터 소스에서 가져온 데이터 포인트 집합을 나타냅니다. 데이터 세트는 자체적으로 삽입할 수 있습니다. 그러나 세션을 만드는 경우 세션과 데이터 세트를 함께 만드는 것이 더 쉬울 수 있습니다.
- 세그먼트는 사용자가 세션에서 수행한 정확한 활동을 기준으로 세션의 데이터 세트를 그룹화합니다. 예를 들어 사용자가 30분 달리기 (세션)를 추적했지만 이 시간 동안 잠시 걸었다면 세그먼트로 나눌 수 있습니다. 달리기 구간이 있고, 걷기 휴식 시간, 달리기 구간이 다시 나뉩니다.
![](https://developers-dot-devsite-v2-prod.appspot.com/static/fit/images/timeline.png?authuser=7&hl=ko)
그림 1은 피트니스 스토어에서 앱 A, B, C가 일부 데이터 세트와 세션을 삽입한 시간 간격을 보여줍니다.
- 앱 A는 세션 1과 세션 A3와 함께 데이터 세트 A1과 A2를 세션과 독립적으로 삽입했습니다.
- 앱 B는 데이터 세트 B1과 B2를 세션 2와 함께 삽입했습니다.
- 앱 C는 세션과는 별개로 데이터 세트 C1을 삽입했습니다.
피트니스 스토어에서 세션 데이터를 읽을 때 세션의 시간 간격 내에 있는 모든 피트니스 데이터가 자동으로 해당 세션과 연결됩니다. 이는 세션을 만든 후 데이터를 삽입하거나 데이터를 수동적으로 추적한 후 세션을 만든 경우에도 마찬가지입니다. 예를 들어 세션 1의 피트니스 데이터를 쿼리하면 다음을 반환합니다.
- 데이터 세트 A1
- 데이터 세트 A2
- 데이터 세트 A3에서 t1과 t2 사이에 있는 부분
- t1과 t2 사이에 있는 데이터 세트 C1의 부분
각 세션과 데이터 세트를 삽입한 앱을 확인할 수 있습니다.
세션 만들기
세션은 다음과 같은 몇 가지 방법으로 만들 수 있습니다.
- 앱은 다음 중 하나에서 적극적으로 세션을 만들 수 있습니다.
- 사용자가 기기에서의 활동을 적극적으로 추적할 때 실시간으로 처리 (Android만 해당)
- 직접 삽입합니다.
- 사용자가 Google 피트니스 앱에 운동 또는 활동을 직접 추가하는 경우
세션을 만드는 경우
수면 데이터를 추가하시나요?
- Yes - 세션을 만들고 피트니스 저장소에 수동으로 삽입합니다. 예를 들어 수면 세션을 삽입합니다. 이는 수면 추적 앱 또는 기기가 있는 사용자가 기기와 상호작용하여 수면 활동을 시작하고 중지하지 않기 때문입니다 (이는 수동적으로 추적됨).
- 아니요: 앱에서 사용자가 활동을 시작하고 중지할 수 있나요?
- No: 세션을 만들지 않습니다. 앱에서만 데이터 세트를 추가하세요.
- 예 - Android API를 사용하여 사용자가 활동을 추적하는 경우 실시간으로 또는 수동으로 세션을 만듭니다. REST API를 사용하여 세션을 만들고 이를 피트니스 저장소에 수동으로 삽입합니다.
- 사용자가 더 상세한 수준에서 다양한 활동 (예: 걷기, 달리기)을 하고 있을 때 앱이 이를 감지할 수 있나요?
- 예 - 세그먼트를 추가합니다.
- 아니요: 데이터 세트를 추가하기만 합니다. 지금은 세그먼트를 무시하고 Google 피트니스가 자동으로 세그먼트를 만들도록 하세요.
독서 세션
앱은 다음과 같은 몇 가지 방법으로 세션을 읽을 수 있습니다.
- 생성/삽입한 특정 세션을 찾습니다.
- 이름 또는
- ID
- 생성/삽입한 모든 세션을 기간별로 찾습니다.
- 기간별로 모든 앱 (Google 피트니스 포함)에서 생성한 사용 가능한 모든 세션을 찾습니다.
세션을 생성한 소스 알아보기
사용자에게 각 세션을 생성한 앱 또는 기기를 표시할 수 있습니다. 각 세션에는 데이터를 수집하거나 변환한 앱 또는 기기에 관한 정보가 포함된 연결된 데이터 소스가 있습니다.
Android
현재는 Android 클라이언트에서 작성한 세션의 패키지 이름만 가져올 수 있습니다. 세션을 만든 앱의 패키지 이름을 가져오려면 getAppPackageName
메서드를 사용합니다. 앱에서 이 정보를 사용하여 피트니스 세션을 삽입한 다른 앱을 사용자에게 표시할 수 있습니다. 각 앱의 아이콘을 표시하여 사용자가 앱을 식별하는 데 도움을 줄 수 있습니다.
인텐트를 실행하여 다른 앱을 실행하여 생성한 세션의 세부정보를 표시할 수도 있습니다. 다른 앱도 인텐트를 실행하여 앱을 실행할 수 있습니다.
세션을 만든 소스 찾기에 대해 자세히 알아보세요.
REST
세션을 만든 Android 앱의 패키지 이름을 가져오려면 session.application
속성을 사용합니다. REST API를 사용하여 만든 세션의 경우 session.name
속성을 대신 사용하세요. 앱에서 이 정보를 사용하여 피트니스 세션을 삽입한 다른 앱을 사용자에게 표시할 수 있습니다. 사용자가 쉽게 식별할 수 있도록 각 앱의 아이콘을 표시할 수 있습니다.
세션을 만든 소스 찾기에 대해 자세히 알아보세요.