[英]Swift HealthKit UpdateQuery only getting called once
I'm currently working on a Project where I want to get the Heart Rate from Health Kit every time it changes.我目前正在开展一个项目,我想在每次更改时从 Health Kit 中获取心率。 I tried already with a Timer too but the result is the same.
我也尝试过使用 Timer,但结果是一样的。
It gets called maximum 2 times and never changes the result again.它最多被调用 2 次,并且永远不会再次更改结果。 Also anybody who has experience with Swift can tell me if I want to get the maximum pulse is HKStatisticsQuery is a good choice for it?
还有任何有 Swift 经验的人都可以告诉我,如果我想获得最大脉冲,HKStatisticsQuery 是一个不错的选择吗?
Finally here is my code I don't have a clue what I did wrong.最后这是我的代码,我不知道我做错了什么。 Also I'm truly sorry for the amateur code I'm a beginner in making programs with Swift.
另外,对于业余代码,我真的很抱歉,我是使用 Swift 制作程序的初学者。
func createHeartRateStreamingQuery() -> HKQuery? {
guard let heartRateType: HKQuantityType = HKQuantityType.quantityType(forIdentifier: .heartRate) else {
return nil
}
let predicate = HKQuery.predicateForSamples(withStart: nil, end: nil,options: .strictEndDate)
let heartRateQuery = HKAnchoredObjectQuery(type: heartRateType, predicate: predicate, anchor: nil, limit: HKObjectQueryNoLimit) { (query, sampleObjects, deletedObjects, newAnchor, error) in
guard let newAnchor = newAnchor,
let sampleObjects = sampleObjects else {
return
}
self.anchor = newAnchor
self.heartRateDelegate?.heartRateUpdated(heartRateSamples: sampleObjects)
}
heartRateQuery.updateHandler = {(query, sampleObjects, deletedObjects, newAnchor, error) -> Void in
guard let newAnchor = newAnchor,
let sampleObjects = sampleObjects else {
return
}
self.anchor = newAnchor
self.heartRateDelegate?.heartRateUpdated(heartRateSamples: sampleObjects)
}
return heartRateQuery
}
After researching I came to the conclusion that only using your iPhone never going to get you near real-time heart rate check and the updateHandler works perfectly fine.经过研究,我得出的结论是,仅使用您的 iPhone 永远不会让您接近实时心率检查,并且 updateHandler 工作得非常好。 The iPhone's HealthKit database only updating after you exit and reenter your app or end of a workout session.
iPhone 的 HealthKit 数据库仅在您退出并重新进入您的应用程序或锻炼结束 session 后才会更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.