簡體   English   中英

Swift HealthKit UpdateQuery 只被調用一次

[英]Swift HealthKit UpdateQuery only getting called once

我目前正在開展一個項目,我想在每次更改時從 Health Kit 中獲取心率。 我也嘗試過使用 Timer,但結果是一樣的。

它最多被調用 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 數據庫僅在您退出並重新進入您的應用程序或鍛煉結束 session 后才會更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM