код Ниже показано, как начать или прекратить тренировки сессии.
let healthStore = HKHealthStore()
healthStore.startWorkoutSession(workoutSession) {
(result: Bool, error: NSError?) -> Void in
}
healthStore.stopWorkoutSession(workoutSession) {
(result: Bool, error: NSError?) -> Void in
}
Существует HKWorkoutSessionDelegate, который уведомляет о своем состоянии сеанса.
protocol HKWorkoutSessionDelegate : NSObjectProtocol {
func workoutSession(workoutSession: HKWorkoutSession,
didChangeToState toState: HKWorkoutSessionState,
fromState: HKWorkoutSessionState, date: NSDate)
func workoutSession(workoutSession: HKWorkoutSession,
didFailWithError error: NSError)
}
[Изменено] 2015/08/31
ObjC версия
HKWorkoutSession *workoutSession = [[HKWorkoutSession alloc] initWithActivityType:HKWorkoutActivityTypeRunning locationType:HKWorkoutSessionLocationTypeOutdoor];
workoutSession.delegate = self;
HKHealthStore *healthStore = [HKHealthStore new];
[healthStore startWorkoutSession:workoutSession];
[healthStore stopWorkoutSession:workoutSession];
HKWrokoutSessionDelegate
- (void)workoutSession:(HKWorkoutSession *)workoutSession
didChangeToState:(HKWorkoutSessionState)toState
fromState:(HKWorkoutSessionState)fromState
date:(NSDate *)date;
- (void)workoutSession:(HKWorkoutSession *)workoutSession didFailWithError:(NSError *)error;
Внимание: Существует изменение названия метода с последней версией, часы OS 2 бета 5.
stopWorkoutSession изменился на endWorkoutSession.
Чтобы быть более конкретным, когда я наклоняю свои часы, экран отключится, программа будет повешена. Когда я наклоняюсь назад, экран включается, сеанс HKworkout в этой точке синхронизации сначала переключается на «.Ended», а затем переключается на «.Running». Как предотвратить это и сохранить сессию всегда «.Running» – user3781258
Звучит как ошибка HealthKit, которую вы должны сообщить Apple. – Allan
@ user3781258 Любой прогресс в этом вопросе? – Philip