如何从HealthKit获取每次锻炼的心率数据

时间:2019-07-08 12:46:31

标签: ios swift health-kit hkhealthstore

我正在尝试检索所有已完成锻炼的心率,还尝试开始和停止锻炼时间,并在JSON结果中将所有值作为“时间”或“数量”项返回。我可以通过查询持续时间大于0来进行所有锻炼,但是现在我想获取此附加信息。

        let workoutPredicate = HKQuery.predicateForWorkouts(with: .greaterThanOrEqualTo, duration: 1)

        let compound = NSCompoundPredicate(andPredicateWithSubpredicates:
            [workoutPredicate])

        let sortDescriptor = NSSortDescriptor(key: HKSampleSortIdentifierEndDate,
                                              ascending: true)

        let query = HKSampleQuery(
            sampleType: .workoutType(),
            predicate: compound,
            limit: 0,
            sortDescriptors: [sortDescriptor]) { query, samples, error in
                DispatchQueue.main.async {
                    guard let finalSamples = samples as? [HKWorkout] else {
                        result()
                        return
                    }
                    result(finalSamples.map { sample -> NSDictionary in
                        return ["duration" : sample.duration, "totalDistance": sample.totalDistance?.doubleValue(for: HKUnit.mile()) as Any, "totalEnergyBurned": sample.totalEnergyBurned?.doubleValue(for: HKUnit.kilocalorie()) as Any]
                    })
                }
        }
        HKHealthStore().execute(query)

我想获取锻炼的心率数据以及锻炼的开始/结束时间。

1 个答案:

答案 0 :(得分:0)

每次锻炼的开始时间和结束日期晚一些,但应该很容易:

print("started @: \(sample.startDate), ended @: \(sample.endDate)")

您每次锻炼都能获得心率(最小/最大/平均)吗?我也对此很感兴趣,而且似乎无法弄清楚这是否可行?