codice seguente è il modo per avviare o interrompere la sessione di allenamento.
let healthStore = HKHealthStore()
healthStore.startWorkoutSession(workoutSession) {
(result: Bool, error: NSError?) -> Void in
}
healthStore.stopWorkoutSession(workoutSession) {
(result: Bool, error: NSError?) -> Void in
}
C'è HKWorkoutSessionDelegate che notifica lo stato della sessione.
protocol HKWorkoutSessionDelegate : NSObjectProtocol {
func workoutSession(workoutSession: HKWorkoutSession,
didChangeToState toState: HKWorkoutSessionState,
fromState: HKWorkoutSessionState, date: NSDate)
func workoutSession(workoutSession: HKWorkoutSession,
didFailWithError error: NSError)
}
[Edited] 2015/08/31
versione
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;
Attenzione: C'è un cambio di nome del metodo con l'ultima versione, guardare OS 2 beta 5.
stopWorkoutSession è stato modificato in endWorkoutSession.
fonte
2015-07-16 02:10:02
Per essere più specifici, quando inclino l'orologio, lo schermo si spegne, il programma viene impiccato. Quando si inclina all'indietro, lo schermo si accende, la sessione HKworkout a questo punto di tempo passerà prima a ".Ended" e quindi passerà a ".Running". Come evitare che ciò accada e mantenere sempre la sessione ".Running" – user3781258
Sembra un bug di HealthKit che dovresti segnalare ad Apple. – Allan
@ user3781258 Qualche progresso in merito? – Philip