如何使 HKworkoutsession 始终成为活跃的锻炼课程

How to make HKworkoutsession always an active workout session

我正在开发 Apple Watch 应用程序,我正在使用 HKworkoutsession 访问心率数据样本。

在最新的 watchos2 beta3 版本中,bug "During an active workout session, new heart rate samples are not generated when the screen is off." 已修复。

我的问题是如何将我的 HKworkoutsession 设置为 "active work out session" 这样我就可以根据需要不断获取心率样本。

谢谢 瑞安

以下代码是开始或停止锻炼的方法。

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 beta 5.

stopWorkoutSession 已更改为 endWorkoutSession。