HealthKit 笔记

2016-11-10  本文已影响0人  songlebao

HealthKit

ios/framework

数据来源

HealthKit 中的数据来源主要有

健康数据被保存在叫 Health Store 的数据库中,而且被加密了,可以使用 HKHealthStore 类来访问。这个数据库存在于 iPhone 和 Apple Watch 中,他俩会自动同步,但是 Apple Watch 中的数据有可能会被系统自动清除以节省空间

隐私问题

用户可以控制 APP 可以访问哪些数据,但是 APP 自己不知道自己能访问什么数据。APP 只能向用户提出请求,用户可以允许或拒绝 APP 的请求,APP 自己却不知道用户到底是允许还是拒绝了请求。比如用户拒绝了APP 获取血压数据的请求,就算用户的健康数据中有血压数据,对于 APP 来说,血压数据是不存在的

关于使用 HealthKit 的注意事项

  1. 不要使用健康数据来打广告

  2. 除非获得了用户的允许,不要将健康数据给第三方机构

  3. 不能出售用户的健康数据

  4. 用户同意的话,你可以把健康数据提供给第三方机构以用于医学研究

  5. 你必须告诉用户你用健康数据的目的

健康数据分类

Health Store 中存储的健康数据分为下面几类

HKObject 是所有 Sample 类数据的 superclass。每个这样的类都有下面的属性

所有的 Sample 数据都是 HKSample 的子类。他有下面的属性

Sample 还可以分为下面 4 种

使用 HealthKit

  1. 在 Xcode 中启用 HealthKit

  2. 调用 HKHealthStore.isHealthDataAvailable() 来确定设备是否可以用健康数据

  3. 如果可用,用 let healthStore = HKHealthStore() 获得 HealthStore 的实例。这个实例是 long lived 的,每个 app 只需要一个实例

  4. 获取使用健康数据的权限

  5. 在 Info.plist 中给出使用健康数据的理由

  6. 如果你没有请求权限,那么请求数据会导致错误 errorAuthorizationNotDetermined ;如果请求被拒绝了,会导致错误 errorAuthorizationDenied

  7. 向 HealthStore 中写入和查询数据

获取健康数据

有 3 种获取健康数据的方法

单位与数量

HKUnit 表示一种单位,包括公制单位和英氏单位。single unit 表示简单的单位,如米、秒等;complex unit 表示由 single unit 组合而成的单位,如米每秒(m/s)等。更多的信息请看 HKUnit

HKQuantity 表示一次查询的结果,它所给出的值会与它所使用的单位有关,因此你可以非常方便的在不同单位之间转换,see HKQuantity

线程

HealthStore 是线程安全的

数字签名

不太清楚,主要是为了防止取出来的健康数据被修改

上一篇 下一篇

猜你喜欢

热点阅读