代码之家  ›  专栏  ›  技术社区  ›  heximal

HKStatisticsQuery返回的数据内容

  •  0
  • heximal  · 技术社区  · 6 年前

    我使用以下代码来获取今天消耗的能量:

        func getTodaysSummary(for type:HKQuantityType!, unit u:HKUnit!, completion: @escaping (Double) -> Void) {
            let stepsQuantityType = type
    
            let now = Date()
            let startOfDay = Calendar.current.startOfDay(for: now)
            let predicate = HKQuery.predicateForSamples(withStart: startOfDay, end: now, options: .strictStartDate)
    
            let query = HKStatisticsQuery(quantityType: stepsQuantityType!, quantitySamplePredicate: predicate, options: .cumulativeSum) { (_, result, error) in
                var resultCount = 0.0
    
                guard let result = result else {
                    completion(resultCount)
                    return
                }
    
                if let sum = result.sumQuantity() {
                    resultCount = sum.doubleValue(for: u)
                }
    
                DispatchQueue.main.async {
                    completion(resultCount)
                }
            }
    
            healthStore.execute(query)
        }
    
    ...
    
    self.getTodaysSummary(for: HKQuantityType.quantityType(forIdentifier: .activeEnergyBurned), unit: HKUnit.kilocalorie(), completion: { (energyBurned) in
      print("\(energyBurned)")
    })
    

    现在我需要了解,它返回什么数据?在不同的来源,如苹果文件,我读到这个数据应该包含所有的活动,包括散步,游泳等。

    但在我的例子中,它只返回数字680(我通过 + 健康应用活动能量屏按钮)

    enter image description here

    它肯定不包括我白天做的步骤。 所以问题是,我需要分别计算这些卡路里吗? 还有一些iWatch环似乎也没有通过HKStatisticsQuery请求返回。我应该分别计算它们来计算总燃烧能量吗?

    0 回复  |  直到 6 年前
        1
  •  1
  •   Allan    6 年前

    iPhone不会自动计算有功能量。用户必须有一个苹果手表,以便获得活跃和基本能量样本自动写入健康工具包。

    推荐文章