我正在从应用程序中的保健工具包中读取心率。但是应用程序尝试读取最新的心跳率,但无法读取。当我打开医疗工具包应用程序,然后打开我的应用程序时,只有它会读取最新的心率。
使用HKAnchoredObjectQuery
来获取健康工具包数据。
所以请任何人提出解决方案。
答案 0 :(得分:0)
Raywonderlich提供了一个很好的教程。我希望这能帮到您。 这是链接https://www.raywenderlich.com/459-healthkit-tutorial-with-swift-getting-started 并在这里获取最新数据是函数
class func getMostRecentSample(for sampleType: HKSampleType,
completion: @escaping (HKQuantitySample?, Error?) -> Swift.Void) {
//1. Use HKQuery to load the most recent samples.
let mostRecentPredicate = HKQuery.predicateForSamples(withStart: Date.distantPast,
end: Date(),
options: .strictEndDate)
let sortDescriptor = NSSortDescriptor(key: HKSampleSortIdentifierStartDate,
ascending: false)
let limit = 1
let sampleQuery = HKSampleQuery(sampleType: sampleType,
predicate: mostRecentPredicate,
limit: limit,
sortDescriptors: [sortDescriptor]) { (query, samples, error) in
//2. Always dispatch to the main thread when complete.
DispatchQueue.main.async {
guard let samples = samples,
let mostRecentSample = samples.first as? HKQuantitySample else {
completion(nil, error)
return
}
completion(mostRecentSample, nil)
}
}
HKHealthStore().execute(sampleQuery)
}