ios - Swift HealthKit UpdateQuery 只被调用一次

标签 ios objective-c swift iphone healthkit

我目前正在做一个项目,我想在每次变化时从 Health Kit 获取心率!我也已经尝试过使用计时器,但结果是一样的。

它最多被调用 2 次并且再也不会改变结果。任何有 Swift 经验的人都可以告诉我,如果我想获得最大脉冲,HKStatisticsQuery 是一个不错的选择吗?

最后这是我的代码我不知道我做错了什么。另外,对于使用 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
}

最佳答案

经过研究,我得出的结论是,仅使用您的 iPhone 永远无法让您接近实时心率检查,而 updateHandler 工作得非常好。 iPhone 的 HealthKit 数据库仅在您退出并重新进入您的应用程序或锻炼结束后更新。

关于ios - Swift HealthKit UpdateQuery 只被调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62163742/

相关文章:

ios - 使用 Swift UI 长按动画

ios - Xcode 11.1 升级奇怪之处 - 主屏幕显示为模态视图

swift - 如何让 UIScrollView 滚动其中的所有内容

ios - Swift 核心数据无法在 NSManged ObjectClass 上调用指定的初始值设定项

ios - "outline"不是有效的样式属性

ios - UIWebView 中的 contentEditable/designMode 时自动滚动

objective-c - 如何获取指定键的值数组?

objective-c - 比较两个数组忽略顺序

ios - Core Data iOS 8 Today Widget 问题

ios - 快速滚动时在 UITableView 单元格中异步加载了错误的图片