1. 介绍

HealthKit是苹果提供的一个框架, 用来访问和分享健康和健身数据, HealthKit为健康和健身数据提供了一个中心仓库, 在用户授权后, app可以通过HealthKit store 访问分享这些数据. HealthKit 提供了大量的数据类型和单位, 用不不允许自己创建数据类型和单位,

2. HealthKit 数据

  1. 特征数据(Characteristic data), 如生日, 血型, 皮肤, 生物性别等, 用户可以直接读取, 但是输入的话必须在健康app中.
  2. 样本数据(Sample data), 大多数的用户健康数据都是通过样本数据进行存储的, 所有的样本类都继承自 HKSample类, 它又是 HKObject类的子类
  3. 训练数据(Workout data): 健身锻炼的数据是通过HKWorkout 进行存储的, HKWorkout也是HKSample的子类
  4. 元数据(source data): 每个样本数据都存储关于数据的来源, HKSourceRevision对象包含app或设备存储的数据. HKDevice对象包含关于产生数据的硬件设备的信息.
  5. 删除的对象: HKDeletedObject 实例用来暂时存储已经被删除的item的UUID. 当一个数据被用户或者其他app删除, 可以用这个对象响应

3. HKObjects和Sample的属性

HKObject 是所有HealthKit sample类型的父类, 'HKObject’的所有子类都是不可变的, 属性如下:

  1. UUID: 条目的唯一标识
  2. Metadata: 一个字典, 包含该条目的额外信息, 字典可以包含预设和自定义的key,
  3. Source Revision: sample的来源, 可以是直接把数据存进HealthKit的设备或者app, HealthKit 自动记录每个对象的来源和版本当一条数据存进来的时候, 这个属性只有当这个对象从healthKit store 中取出来的时候有效
  4. Device: 生成数据的硬件设备

所有的HKSample类都是HKObject的子类, 所有的sample类都是HKSample的子类, 属性如下:

  1. Type: 样本的类型, 如睡眠分析类型, 身高sample, step count sample.
  2. Start date: 样本数据的开始时间
  3. End date: 样本数据的结束时间, 如果样本数据仅仅代表一个时间点的数据, 则结束时间应该和开始时间是一样的, 否则, 结束时间应该晚于开始时间

sample 对进一步划分为四个子类

  1. Category samples: 可以划分为有限类别的数据
  2. Quantity sample: 可以存储为数值类型的数据, 是最长用的数据类型, 他们包括身高, 体重, 步数, 用户的温度, 脉搏速度等等
  3. Correlation: 包含一个或者多个sample的复合数据, 在iOS8, HealthKit用这个类型的数据来代表食物, 血压等等, 当你创建食物或者血压数据的时候也应该使用者这个类型
  4. Workouts: 训练数据, 代表物理训练, 如跑步, 游泳, 训练数据通常有类型, 时长, 距离, 能量消耗等属性, fine-grained, 你可以将训练数据与一些细粒度的sample关联,

HealthKit store 是线程安全的, 大多数HealthKit object是不可变的, 一般情况你可以在多线程环境中使用它

HealthKit的所有回调函数都没有在主线程中执行, 如果你要刷新UI记得切换到主线程

iphone和apple watcch中的数据会自动同步, 为了节省空间, 手表会定期清除旧数据, iPad没有healthKit

4. 配置HealthKit

  1. 在app中允许HealthKit

  2. 确保HealthKit在当前手机有效

    if (HKHealthStore.isHealthDataAvailable) {self.store = [[HKHealthStore alloc]init];;}else {NSLog(@"aikesi--当前设备不支持HealthKit");}
    
  3. 创建自己的HealthKit store

  4. 请求授权读写数据

为了保护用户隐私, HealthKit要求对每种数据类型,app必须要申请细粒度的授权, 但是可以不用一次申请完, 要用的时候申请也是可以的

let allTypes = Set([HKObjectType.workoutType(),HKObjectType.quantityType(forIdentifier: .activeEnergyBurned)!,HKObjectType.quantityType(forIdentifier: .distanceCycling)!,HKObjectType.quantityType(forIdentifier: .distanceWalkingRunning)!,HKObjectType.quantityType(forIdentifier: .heartRate)!])healthStore.requestAuthorization(toShare: allTypes, read: allTypes) { (success, error) inif !success {// Handle the error here.}
}

iOS HealthKit相关推荐

  1. iOS Healthkit 使用探索分析

    一 基本认知层面: HealthKit框架提供了一个结构,应用可以使用它来分享健康和健身数据.HealthKit管理从不同来源获得的数据,并根据用户的偏好设置,自动将不同来源的所有数据合并起来.应用还 ...

  2. android计步器摘要,ios - Healthkit每小时活动摘要包含步数,距离和卡路里? - 堆栈内存溢出...

    查询Healthkit应返回包含步长,距离和卡路里的数组对象. 我能够单独归还他们 活动步骤/小时 func activitySteps(_ startDate:NSDate, endDate:NSD ...

  3. [北京][10-30K] 上过 Apple WWDC,被 Google I/O 推荐的 iHealth(中国)职等你!

    公司介绍 iHealth Labs 是一家创立于美国硅谷的智能健康硬件公司,致力于让所有人更简单.有效地管理好个人健康.本次招聘职位包含:前端.后端.测试.运维.产品经理.Android.iOS.实习 ...

  4. iOS利用HealthKit框架从健康app中获取步数信息

    微信和QQ的每日步数最近十分火爆,我就想为自己写的项目中添加一个显示每日步数的功能,上网一搜好像并有相关的详细资料,自己动手丰衣足食. 统计步数信息并不需要我们自己去实现,iOS自带的健康app已经为 ...

  5. iOS 使用HealthKit框架实现获取今日步数

    Demo地址:我的github仓库 HealthKit hey!宝宝又来更新博客了! 今天早上查看天气,发现自己缺少一个查看天气的APP, 于是下载了一个"墨迹天气",结果宝宝在欣 ...

  6. IOS审核被拒 这里您的应用使用HealthKit

    IOS审核被拒 这里您的应用使用HealthKit,但您的应用似乎不包含任何需要健康或健身数据的主要功能. uniapp上架苹果商店因为运动健康问题被拒绝 解决办法 uniapp上架苹果商店因为运动健 ...

  7. iOS 审核被拒记录 Guideline 2.5.1 HealthKit; 2.5.4 UIBackgroundModes audio; 1.5 Developer Information

    iOS 审核被拒记录 2.5.1 解决方案一(当前项目不需要HealthKit框架,将HealthKit相关内容和权限移除) 解决方案二(当前项目需要HealthKit框架) iOS 审核被拒记录 2 ...

  8. iOS - 苹果健康架构 基于HealthKit的健康数据的编辑

    最近公司需求,研究了一周之久的苹果健康架构,内容包括:资料调研.报告与HealthKit.framework - API,这一研习还在持续进行中.至此,主要认识到了2点:对苹果健康健康架构设计与实现原 ...

  9. iOS 审核因为HealthKit被拒的解决方式

    最近公司提交项目给苹果审核时,遇到一个奇怪的错误. 如图 翻译如图 这个错误就是说在我在项目中使用了HealthKit,但是在审核过程中并没有看到任何需要健康或者健身数据的主要功能. 经过一番查找,终 ...

  10. iOS获取健康步数从加速计到healthkit

    转自:http://www.cnblogs.com/dongliu/p/5629065.html 计步模块接触了一年多,最近又改需求了,所以又换了全新的统计步数的方法,整理一下吧. 在iPhone5s ...

最新文章

  1. Python__数据结构与算法——图
  2. CVPR 2017 ADNet:《 Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning》论文笔记
  3. linux相关函数,linux学习-信号相关函数
  4. 线段树之线段操作之陈老师的福利
  5. 详细整理Spring事务失效的具体场景及解决方案
  6. mysql的导入导出命令_mysql导入导出命令
  7. 学校新机房装系统——联想机房网络同传
  8. DEAP2.1软件与Malmquist指数操作说明
  9. 数据仓库建设思维导图
  10. 【算法】小团的车辆调度(美团2021校招题)
  11. unity球体添加光源_Unity 3D光源-Point Light点光源详解/灯泡、模拟灯光效果教程
  12. SecureCRT 不能输入命令及回车键不能用
  13. Win10系统总是自动更新升级?教你如何关闭这烦人功能
  14. 求超大文件上传方案( c# )
  15. 敲开脑洞(一),如何摆脱痛苦,记自己的短期修行
  16. Discom BKS03/KS91D传感器
  17. [从头读历史] 第249节 易经
  18. 回溯法(算法分析与设计)
  19. 人工智能-深度学习Tensorflow2.0-python
  20. python-恺撒密码 I

热门文章

  1. 怎么解决redis雪崩和穿透
  2. 二极管双平衡混频器的原理[ZT]
  3. 激光雷达SLAM三维建图、点云算法 点云处理 自己写的算法 没用任何现成的库文件
  4. 松下伺服驱动器A4系列图纸
  5. 二级计算机题世界动物日,计算机二级考试真题-PPT-张宇-世界动物日介绍
  6. windows server 2008安装配置FTP服务器
  7. Rational Rose—概述
  8. 工作类书籍之计算机相关
  9. 中国网络游戏中的反外挂模式
  10. robotium 代码