如何从 Swift 中的 Health Kit Sdk 中获取卡路里和心率?

Posted

技术标签:

【中文标题】如何从 Swift 中的 Health Kit Sdk 中获取卡路里和心率?【英文标题】:How to get the calories and heart rate from Health Kit Sdk in Swift? 【发布时间】:2016-11-22 10:51:31 【问题描述】:

我正在创建一个健身健康应用程序,我必须在其中向用户显示来自 Health kit 的实时卡路里和他们的心率。我得到了权限。但我不知道如何获取卡路里和心率。

这里是代码的权限。

static let healthKitStore = HKHealthStore()

// MARK:- Health Kit Permissions :-
static func authorizeHealthKit() 

    // HKQuantityTypeIdentifierBodyMass - For Weight

    var shareTypes = Set<HKSampleType>()
    shareTypes.insert(HKSampleType.workoutType())
    shareTypes.insert(HKSampleType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)!)
    shareTypes.insert(HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierDistanceWalkingRunning)!)
    shareTypes.insert(HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierActiveEnergyBurned)!)


    var readTypes = Set<HKObjectType>()
    readTypes.insert(HKObjectType.workoutType())
    readTypes.insert(HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)!)
    readTypes.insert(HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierDistanceWalkingRunning)!)
    readTypes.insert(HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierActiveEnergyBurned)!)

    healthKitStore.requestAuthorizationToShareTypes(shareTypes, readTypes: readTypes)  (success, error) -> Void in
        if success 
            print("success")

         else 
            print("failure")

        

        if let error = error 

            print(error)
        
    


获得成功后,我需要卡路里和心率,我必须使用哪个功能或哪个代码。像 Fitbit APIs 返回数据还是有 Apple Api's 会返回数据?

【问题讨论】:

检查这个 - forums.developer.apple.com/thread/6153 【参考方案1】:

检查此代码:

let tHeartRate = HKSampleType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)
            let tHeartRateQuery = HKSampleQuery(sampleType: tHeartRate!, predicate:.None, limit: 0, sortDescriptors: nil)  query, results, error in

                if results?.count > 0
                
                    var string:String = ""
                    for result in results as! [HKQuantitySample]
                    
                        let HeartRate = result.quantity
                        string = "\(HeartRate)"
                        print(string)
                    
                

self.healthKitStore.executeQuery(tHeartRateQuery)

【讨论】:

我必须在获得权限后调用此方法,我是对的 它将返回这样的数据 1.73333 count/s, 1.65 count/s, 2.48333 count/s。但是这种格式的心率应该是 98、81、103。 @MandeepSingh 从字符串中获取数值部分并乘以 60 得到格式(98,103,98 等)的结果,参考此链接获取数值部分***.com/questions/30342744/…

以上是关于如何从 Swift 中的 Health Kit Sdk 中获取卡路里和心率?的主要内容,如果未能解决你的问题,请参考以下文章

Health Kit 按设备类型分隔当天的运动步数

Health Kit 按设备类型分隔当天的运动步数

如何使用 Health Kit 断开 Health App 的源?

如何使用 Health Kit 断开 Health App 的源?

当我使用 Health App 中的 Delete All 操作时,Health kit 仍会返回已删除的数据

从 Health Kit 获取一夜之间燃烧的卡路里