2015-07-14 13 views
5

Sto lavorando su Apple Watch App e sto utilizzando HKworkoutsession per accedere al campione di dati sulla frequenza cardiaca.Come rendere HKworkoutsession sempre una sessione di allenamento attiva

Nel nuovissimo bug di rilascio di watchos2 beta3 "Durante una sessione di allenamento attiva, i nuovi campioni di frequenza cardiaca non vengono generati quando lo schermo è spento." è aggiustato.

La mia domanda è come potrei impostare la mia sessione di lavoro in HK sempre come una "sessione di allenamento attiva", così potrei continuare ad ottenere il campione della frequenza cardiaca di cui ho bisogno.

Grazie Ryan

+0

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

+0

Sembra un bug di HealthKit che dovresti segnalare ad Apple. – Allan

+0

@ user3781258 Qualche progresso in merito? – Philip

risposta

4

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.

+0

Puoi tradurre il tuo esempio in Objective C? –

+2

Ho modificato con codici Objective-C. Per favore dai un'occhiata! –

+0

Ho codice simile a questo e vedo ancora il comportamento descritto nella domanda. – yairsz

Problemi correlati