Swift HealthKit触发心率样本
我能够用下面的代码从HealthKit读取一段时间(训练持续时间)的平均心率数据 然而,当我查看Apple Health应用程序时,它显示从Apple Watch采集心率样本的频率非常低(每15-30分钟一次)。这使得我在此期间的平均HR读数非常不准确 如何触发HealthKit从手表中采集心率数据并将其写入HealthKitSwift HealthKit触发心率样本,swift,apple-watch,healthkit,Swift,Apple Watch,Healthkit,我能够用下面的代码从HealthKit读取一段时间(训练持续时间)的平均心率数据 然而,当我查看Apple Health应用程序时,它显示从Apple Watch采集心率样本的频率非常低(每15-30分钟一次)。这使得我在此期间的平均HR读数非常不准确 如何触发HealthKit从手表中采集心率数据并将其写入HealthKit let endDate = (calendar as NSCalendar).date(byAdding: NSCalendar.Unit.minute, val
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应用程序,可以跟踪训练,你可以通过使用从iPhone开始训练。在测量之前你是否开始了HKWorkoutSession
?@DávidPásztor我没有,一旦开始就很好,谢谢@DávidPászor我开始了训练,但当我结束训练时,它似乎并没有停止。人力资源监视器继续打开,而watch应用程序仍在前台。有什么办法可以阻止这一切吗?谢谢,我补充道,这解决了我的问题!注:我还需要添加WKBackgroundModes和UIBackgroundModes。我开始了训练,但当我调用end session时,它似乎没有停止。人力资源监视器继续打开,而watch应用程序仍在前台。有什么办法可以阻止这种情况吗?@achen1217你能帮我提供一个关于你是如何进行HKWorkoutSession的示例,以及你是如何使用UIBackgroundModes和WKBackgroundModes进行此操作的吗?这是可行的,但苹果不允许我们使用Appstore。主要原因是:该应用程序没有健身核心功能!