iOS HealthKit - как получить самую последнюю текущую частоту сердечных сокращений, например, осложнение частоты пульса?
У меня есть следующая функция, которая измеряет частоту сердечных сокращений из комплекта HealthKit. Когда я изучаю полученный образец, он часто имеет метку времени в течение последних 5 минут. Однако, если я посмотрю на осложнение пульса Apple Watch, оно иногда имеет другое значение, например:
- Я вижу: 84 BPM 5 MIN AGO
- Apple Watch могут показывать 84 BPM 5 MIN AGO или что-то вроде 80 BPM NOW
Я попытался поэкспериментировать с конечными датами и использовать "строгую конечную дату", но все еще вижу, что данные, которые я получаю из аптечки, часто отстают от осложнений сердечного ритма.
Могу ли я узнать у себя последнюю частоту сердечных сокращений прямо на часах (пропуская аптечку)? Есть ли способ попросить часы Apple измерять частоту пульса прямо сейчас?
static func getCurrentHeartRate () {
guard let sampleType = HKObjectType.quantityType(forIdentifier: .heartRate) else {
return}
let predicate = HKQuery
.predicateForSamples(
withStart: Date().addingTimeInterval(-3600),
end: Date(),
options: [])
let sortDescriptor = NSSortDescriptor(
key: HKSampleSortIdentifierStartDate,
ascending: false)
let query = HKSampleQuery(sampleType: sampleType,
predicate: predicate,
limit: Int(1),
sortDescriptors: [sortDescriptor]) { query, results, error in
guard let samples = results as? [HKQuantitySample] else {
return
}
for s in samples {
print("Recent heart rate: \(s.heartRateString())")
}
}
HKHealthStore().execute(query)
}
extension HKQuantitySample {
func heartRateString() -> String {
let date = self.startDate
let updateString = "\(heartRateStringShort())\(date.timeAgoString())"
return updateString
}
func heartRateStringShort() -> String {
let heartRateUnit = HKUnit(from: "count/min")
let heartRate = Int(self.quantity.doubleValue(for: heartRateUnit))
let updateString = "\(heartRate) BPM"
return updateString
}
}
0 ответов
Если вы начнете тренировку на часах, вы сможете получать обновления пульса каждые несколько секунд. Посмотрите, как настроить HKLiveWorkoutBuilder
Без HKLiveWorkoutBuilder он не будет обновляться так быстро.