HeathKit框架学习

本文详细介绍了Apple的HeathKit框架,包括其在iOS 8中的作用,用户数据安全与隐私保护,以及框架核心组件如HKSample、HKQuery、HKUnit和HKHealthStore的使用方法。通过示例展示了如何获取和保存用户健康数据,如BMI、训练活动等,强调了获取用户授权和数据安全的重要性。文章适合iOS开发者了解和学习HeathKit框架。
摘要由CSDN通过智能技术生成

HeathKit框架学习

本文结构
  • 简介
  • 用户数据安全及隐私
  • HeathKit框架
  • HeathKit使用
  • 总结

简介

HeathKit是Apple公司在推出iOS 8 系统时一块推出的关于健康信息的框架。如果iPhone手机系统升级到iOS8之后就会发现多了一个健康-app,这就是Apple提供的一个记录用户健康信息的app,可以用它来分享健康和健身数据。还可以指定数据的来源,比如我们自己创建一个app,在我们的app中使用了HeathKit框架之后只要经过用户的认证,就可以在我们的app之中给健康分享数据或者从健康中获取数据。

HeathKit可以与健身设备一起工作,iPhone手机自身可以监控步数信息,会自动导入步数信息。但是其他信息或者设备需要配套的应该才能获取到数据并导入到HeathKit中并在健康中显示。

HeathKit不能再iPad中使用,而且它也不支持扩展。

用户数据安全及隐私

由于用户的健康信息可能是敏感的,所以这些用户信息不能让开发者很随便的获取到。每条信息的读写都需要用户去选择是否同意,比如用户可以同意你获取到用户的身高体重,但是不同意读写生殖健康等其他用户不愿意公开的信息。为了防止信息泄露,我们是不知道用户是否禁止了某条信息是否被用户禁止读取的。简单的说,如果获取不到某条信息,就代表没有这条信息。

关于更多的关于隐私的信息,可以参考隐私

HeathKit框架

HeathKit在各个应用之间提供了一种有意义的方式共享数据。因此,我们必须使用HeathKit框架提供的数据类型和单位。这保证了数据存在的真正意义,我们不能自定义数据类型及单位。框架使用了子类化,例如HKObjectHKObjectType抽象类拥有很多有平行关系的子类,当使用Object或者ObjectType的时候,必须确保使用正确的子类。

HeathKit中能够存储的类都是HKObject的子类,大部分HKObject的子类都是不可变的。每个对象都有下面的属性:

  • UUID:每个对象的标识符
  • Source:数据的来源,来源可以是HeathKit的健康app,也可以是我们自己创建的app。当一个对象存储到HeathKit中时会设置其来源。只有从HeathKit中获取到的数据的来源才有效。
  • Metadata:一个包含该对象额外信息的字典,元数据包含预定义的key和自定义的key,预定义的key用来帮助我们在应用间共享数据,而自定义的key用来扩展HeathKit,为对象添加针对应用的数据。

HeathKit的对象主要分为特征和样本。特征对象代表用户的基本不变的数据,包括用户的生日、血型和性别等。我们创建的app不能修改这些信息,只能让用户在健康中去修改或者添加个人特征信息。
样本对象代表某个特定时间的数据,所有的样本类型的对象都是HKSample的子类。它们都有下面的特性:

  • Type :样本类型,例如:睡眠分享、步行距离、心率样本等
  • StartDate:样本开始时间
  • EndDate:样本结束时间。如果是某一个时间的样本,则开始于结束时间相同,如果是某个时间段的样本,则结束时间在开始时间的后面。

样本类型又可以分为四个类型:

  1. 类别样本(HKCategorySample):在iOS 8 中,只有睡眠分析这一个类别样本。代表有限种类的样本.
  2. 数量样本(HKQuantitySample):这种样本代表存储数据的样本,比如步数、距离、用户的体温等。它是HeathKit中最常见的数据类型。
  3. 关系样本(HKCorrelation):代表复合数据,包括一个或者多个样本。在iOS 8 中,用correlation代表食物和血压。在创建食物或血压时,需要用correlation
  4. 训练活动(HKWorkout):代表某种活动,比如走、跑步等。包含有开始时间、结束时间、运动类型、消耗能量、运动距离等属性。还可以为workout关联许多详细的样本。不像correlation,这些样本不包含在workout中,但是可以通过workout获取到。

再介绍一个HeathKit中经常用到的一些类。

HKSamle

每个HkSample的子类都有对应的便利方法创建对应的对象。比如:

对于数量样本,需要创建HKQuantity类的实例。而且数量的单位和类型标识符文档中描述的可用单位要相同。例如:HKQuantityTypeIdentifierHeight 文档中说明它使用长度单位,因此,你的数量必须使用厘米、米、英尺、英寸或者其他长度单位。

这里写图片描述

对应类别样本,需要创建HKCategorySample的实例。它的值必须和类型标识符文档中描述的枚举值相关。例如, HKCategoryTypeIdentifierSleepAnalysis 文档中说明它使用的枚举值。因此你在创建样本时必须从这个枚举中传递一个值。
这里写图片描述

同样,你必须先创建correlation包含的所有样本。correlation的类型标识符描述了它可以包含的类型和对象的数量。不要把被包含的对象存进HealthKit。它们是以correlation的一部分存储的。
这里写图片描述

对于训练活动样本,首先,创建 HKWorkoutType 实例并不需要指定类型标识符。所有的workout都是用同样的类型标识符。第二,对于每个workout你都需要提供一个 HKWorkoutActivityType 值。这个值定义了workout中执行的活动的类型。最后,当workout保存到HealthKit后,你可以给workout关联额外的样本。这些样本提供了workout的详细信息。

这里写图片描述

HKQuery

HeathKit提供了许多查询读取数据的方法:

  1. 直接方法查询。对于特征样本,可以直接查询获取到,这些方法只能查询特征样本。更多信息:
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值