是否可以向 HealthKit 添加自定义数据?

Posted

技术标签:

【中文标题】是否可以向 HealthKit 添加自定义数据?【英文标题】:Is it possible to add custom data to HealthKit? 【发布时间】:2014-10-06 19:05:31 【问题描述】:

我们正在制作一款应用,该应用会收集健康应用中的列表不支持的特殊类型的数据。有没有办法为此创建一个新类别?

【问题讨论】:

【参考方案1】:

不,目前没有。来自HealthKit Framework Reference:

HealthKit 框架旨在以有意义的方式在应用之间共享数据。为此,该框架将数据和单位的类型限制在一个预定义的列表中。这些限制确保其他应用程序了解数据的含义以及如何使用它。 因此,开发人员无法创建自定义数据类型或单位。相反,HealthKit 试图提供一个合理完整的数据类型和单位列表。

如果我是你,我会提交一份雷达 (http://bugreport.apple.com),详细说明你希望添加的健康数据类型。

【讨论】:

这仍然有效吗?我在你链接的页面上找不到它了。 @pkyeck 见developer.apple.com/documentation/healthkit/…(看起来他们移动了它):“数量的单位必须与类型标识符文档中描述的允许单位相对应。”【参考方案2】:

是的,你可以。只需将其定义为 NSDictionary 并将其传递到元数据字段即可。请注意以下自定义字段:push_upssit_upsstatus

let end = NSDate()
let start = NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitMinute,
    value: -2, toDate: end, options: nil)

let energyBurned = HKQuantity(unit: HKUnit.kilocalorieUnit(),
    doubleValue: 425.0)

let distance = HKQuantity(unit: HKUnit.mileUnit(),
    doubleValue: 0)

let status = "felt okay...could have done more"
let push_ups = 40
let sit_ups = 50

let s = ["push_ups": push_ups,
    "sit_ups": sit_ups,
    "notes": status
    ] as NSDictionary

// Provide summary information when creating the workout.
let wrkOut = HKWorkout(activityType: HKWorkoutActivityType.FunctionalStrengthTraining,
    startDate: start, endDate: end, duration: 0,
    totalEnergyBurned: energyBurned, totalDistance: distance, metadata: s as! [NSObject : AnyObject])

【讨论】:

它在技术上是元数据 - 与其他观察收集系统(具有不同的扩展机制)不同,元数据并非旨在存储可编码值。这可能很重要,也可能无关紧要。 那么使用这种方法是否也可以将数据存储在 HealthStore 中,并在苹果 Health 应用中显示为图形上的自定义 HKUnit?

以上是关于是否可以向 HealthKit 添加自定义数据?的主要内容,如果未能解决你的问题,请参考以下文章

iOS Healthkit 记录自定义锻炼数据

iOS Healthkit 记录自定义锻炼数据

是否可以向类型/类添加自定义方法?

向 ARKit 添加自定义视图

Evo Pdf 向 PDF 添加自定义属性

从 HealthKit 查询游泳距离