애플워치를 통해 유저의 운동을 추적하는 세션
세션은 지정된 활동에 대해 Apple Watch의 센서를 조정합니다. 모든 운동 세션은 고주파 심박수 샘플을 생성합니다. 그러나 야외 사이클링 활동은 정확한 위치 데이터를 생성하는 반면, 실내 사이클링 활동은 그렇지 않습니다.
Apple Watch는 한 번에 하나의 운동 세션을 실행합니다. 만약 운동이 실행 중일 때 두 번째 운동이 시작되면, HKWorkoutSessionDelegate 객체가 HKError.Code.errorAnotherWorkoutSessionStarted 오류를 받고 세션이 종료됩니다.
workout session 만들기
init(healthStore: HKHealthStore, configuration: HKWorkoutConfiguration)
: workout builder와 연관된 새로 만들어진 workout session을 반환합니다.
configuration은 다음과 같이 구성될 수 있습니다
activityType
https://developer.apple.com/documentation/healthkit/hkworkoutactivitytype
locationType
- unknown
- indoor
- outdoor
swimmingLocationType
- openWater
- pool
- unknown
lapLengh
: 운동 세션을 위한 랩의 길이
let healthStore = HKHealthStore()
var session: HKWorkoutSession?
let configuration = HKWorkoutConfiguration()
configuration.activityType = .running
configuration.locationType = .outdoor
session = try HKWorkoutSession(healthStore: healthStore, configuration: configuration)
session 모니터링하기
var delegate: (any HKWorkoutSessionDelegate)?
: 운동 세션 delegate
protocol HKWorkoutSessionDelegate
: 운동 세션 상태의 오류 및 변경 사항에 대한 알림을 받기 위한 인터페이스를 정의하는 세션 위임 프로토콜
workout builder 접근하기
func associatedWorkoutBuilder( ) -> HKLiveWorkoutBuilder
: 운동 세션과 관련된 실시간 wrokout builder를 반환합니다.
운동 관리하기
func prepare( )
: workout session 준비하기
func startActivity(with: Date?)
: workout session 활동 시작 날짜를 설정하고 시작하기
func pause( )
: workout session 중지하기
func resume( )
: workout session 재개하기
func end( )
: workout session 끝내기
원격 workout session으로 작업하기
func startMirroringToCompanionDevice(completion: (Bool, (any Error)?) -> Void)
: workout session을 컴패니언 iOS 기기에 미러링하는 것을 시작합니다.
func stopMirroringToCompanionDevice(completion: (Bool, (any Error)?) -> Void)
: workout session을 컴패니언 iOS 기기에 미러링하는 것을 멈춥니다.
func sendToRemoteWorkoutSession(data: Data, completion: (Bool, (any Error)?) -> Void)
: 원격 workout session에 제공받은 데이터 전송하기
workout 활동들 관리하기
var currentActivity: HKWorkoutActivity
: 현재 workout 활동
func beginNewActivity(configuration: HKWorkoutConfiguration, date: Date, metadata: [String : Any]?)
: workout session에서 새로운 workout 활동 시작하기
func endCurrentActivity(on: Date)
: 현재 workout 활동 끝내기
'SwiftUI' 카테고리의 다른 글
HKLiveWorkoutDataSource (0) | 2024.03.11 |
---|---|
HKLiveWorkoutBuilder (0) | 2024.03.11 |
HKHealthStore (0) | 2024.03.11 |
Alamofire (0) | 2024.03.11 |
Authorizing access to health data (0) | 2024.03.11 |