Swift HealthKit 触发心率示例

Swift HealthKit Trigger Heart Rate Sample

我可以使用以下代码从 HealthKit 读取一段时间(锻炼持续时间)的平均心率数据。

但是,当我查看 Apple Health 应用程序时,它显示 Apple Watch 的心率样本采集频率非常低(每 15-30 分钟一次)。这使得我在此期间的平均 HR 读数非常不准确。

如何触发 HealthKit 从手表中采样(收集)心率数据并将其写入 HealthKit?

    let endDate = (calendar as NSCalendar).date(byAdding: NSCalendar.Unit.minute, value: duration, to: startDate, options: NSCalendar.Options())
    let predicate = HKQuery.predicateForSamples(withStart: startDate, end: endDate, options: HKQueryOptions())

    let squery = HKStatisticsQuery(quantityType: heartRateType, quantitySamplePredicate: predicate, options: HKStatisticsOptions.discreteAverage, completionHandler: { (qurt, result, errval) -> Void in

        guard errval == nil else { print("error"); completion(0.0, errval); return }

        var averageHeartRate : Double = 0.0
        if (result != nil && result!.averageQuantity() != nil) {
            let quantity : HKQuantity = result!.averageQuantity()!
            averageHeartRate = quantity.doubleValue(for: HKUnit.count().unitDivided(by: HKUnit.minute()))
        }
    })

要从 Apple Watch 获取更频繁的心率数据,用户必须 运行 手表上的应用程序正在跟踪 HKWorkoutSession。如果您的应用程序有一个配对的 watchOS 应用程序来跟踪锻炼,您可以使用 startWatchApp(with workoutConfiguration:completion:).

从 iPhone 开始锻炼