2015-07-14 5 views
5

Я работаю над приложением apple watch, и я использую HKworkoutsession для доступа к образцу данных о частоте сердечных сокращений.Как сделать HKworkoutession всегда активной сессией тренировки

В новейшей версии watchos2 beta3 release «Во время активной тренировки новые образцы сердечного ритма не генерируются, когда экран выключен». фиксированный.

Мой вопрос: как я могу установить HKworkoutession всегда как «активный сеанс работы», таким образом, я мог бы продолжать получать образец сердечного ритма, сколько мне нужно.

Благодаря Райан

+0

Чтобы быть более конкретным, когда я наклоняю свои часы, экран отключится, программа будет повешена. Когда я наклоняюсь назад, экран включается, сеанс HKworkout в этой точке синхронизации сначала переключается на «.Ended», а затем переключается на «.Running». Как предотвратить это и сохранить сессию всегда «.Running» – user3781258

+0

Звучит как ошибка HealthKit, которую вы должны сообщить Apple. – Allan

+0

@ user3781258 Любой прогресс в этом вопросе? – Philip

ответ

4

код Ниже показано, как начать или прекратить тренировки сессии.

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.

+0

Не могли бы вы перевести свой пример на Objective C? –

+2

Я редактировал коды Objective-C. Взгляни, пожалуйста! –

+0

У меня есть код, подобный этому, и до сих пор вижу поведение, описанное в вопросе. – yairsz

Смежные вопросы