2015-07-14 4 views
5

Ich arbeite an Apple Watch App und ich benutze HKworkoutsession, um auf Herzfrequenzdaten Probe zuzugreifen.Wie HKworkoutsession immer eine aktive Trainingssession machen

Im neuesten watchos2 beta3 Release-Fehler "Während einer aktiven Trainingssitzung werden keine neuen Herzfrequenz-Samples generiert, wenn der Bildschirm ausgeschaltet ist." Ist repariert.

Meine Frage ist, wie könnte ich meine HKworkoutsession immer als eine "aktive Trainingseinheit" einstellen, damit ich Herzfrequenz-Sample bekommen könnte, wie ich brauche.

Dank Ryan

+0

Um genauer zu sein, wenn ich meine Uhr kippen, Bildschirm wird ausgeschaltet, Programm wird gehängt. Wenn ich nach hinten kippe, schaltet sich der Bildschirm ein, die HKworkout-Sitzung wechselt zu diesem Zeitpunkt zuerst auf ".Ended" und dann auf ".Running". Wie man dies verhindert und die Sitzung immer ".Running" – user3781258

+0

Klingt wie ein HealthKit-Fehler, den Sie Apple melden sollten. – Allan

+0

@ user3781258 Irgendwelche Fortschritte in dieser Angelegenheit? – Philip

Antwort

4

-Code finden, wie Trainings-Sitzung starten oder zu stoppen.

let healthStore = HKHealthStore() 
healthStore.startWorkoutSession(workoutSession) { 
    (result: Bool, error: NSError?) -> Void in 
} 

healthStore.stopWorkoutSession(workoutSession) { 
    (result: Bool, error: NSError?) -> Void in 
} 

Es gibt HKWoorkoutSessionDelegate, das seinen Sitzungsstatus benachrichtigt.

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

ObjC Version

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; 

Achtung: Es gibt eine Änderung des Methodennamen mit der neuesten Version, Watch OS 2 beta 5.

stopWorkoutSession wurde in endWorkoutSession geändert.

+0

Können Sie bitte Ihr Beispiel in Objective C übersetzen? –

+2

Ich habe mit Objective-C-Codes bearbeitet. Bitte schau es dir an! –

+0

Ich habe Code ähnlich und sehe immer noch das in der Frage beschriebene Verhalten. – yairsz

Verwandte Themen