Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift HealthKit触发心率样本_Swift_Apple Watch_Healthkit - Fatal编程技术网

Swift HealthKit触发心率样本

Swift 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

我能够用下面的代码从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应用程序,可以跟踪训练,你可以通过使用从iPhone开始训练。

在测量之前你是否开始了
HKWorkoutSession
?@DávidPásztor我没有,一旦开始就很好,谢谢@DávidPászor我开始了训练,但当我结束训练时,它似乎并没有停止。人力资源监视器继续打开,而watch应用程序仍在前台。有什么办法可以阻止这一切吗?谢谢,我补充道,这解决了我的问题!注:我还需要添加WKBackgroundModes和UIBackgroundModes。我开始了训练,但当我调用end session时,它似乎没有停止。人力资源监视器继续打开,而watch应用程序仍在前台。有什么办法可以阻止这种情况吗?@achen1217你能帮我提供一个关于你是如何进行HKWorkoutSession的示例,以及你是如何使用UIBackgroundModes和WKBackgroundModes进行此操作的吗?这是可行的,但苹果不允许我们使用Appstore。主要原因是:该应用程序没有健身核心功能!