#HealthKit简单介绍
目前很多App都会有访问健康数据的需求,那么我们就不得不使用HealthKit。HealthKit框架提供了一个结构,应用可以使用它来分享健康和健身数据。HealthKit管理从不同来源获得的数据,并根据用户的偏好设置,自动将不同来源的所有数据合并起来。应用还可以获取每个来源的原始数据,然后执行自己的数据合并。
#如何在项目中集成HealthKit
这一个部分我们将一步一步的在项目中集成HealthKit。
##第一步添加HealthKit
1、进入项目设置–>Capabilities–>HealthKit,然后如下图打开就可以了,如果下面几个选项前都打上了勾的话,那么就代表OK了,一般也不会出现X。

2、如果上面的步骤完成了的话那么在工程目录下会多一个文件,这个文件以工程名命名,后缀名为entitlements,如下图:

3、并且在Frameworks目录下会多一个HealthKit.framework文件:

##项目中的使用
首先要在需要访问健康数据的地方,使用import导入HealthKit头文件:

#import <HealthKit/HealthKit.h>

然后写一个属性:

@property (nonatomic, strong) HKHealthStore *healthStore;

1、这一步为你的应用实例化一个 HKHealthStore 对象。每个应用只需要一个HealthKit存储实例。这个存储实例就是你和HealthKit数据库交互的主要接口。

self.healthStore = [[HKHealthStore alloc] init];

2、 调用 isHealthDataAvailable 方法来查看HealthKit在该设备上是否可用。HealthKit在iPad上不可用。

if ([HKHealthStore isHealthDataAvailable]) {NSLog(@"HealthDataAvailable");}

3、在项目中具体代码:

//创建想要获取的数据类型HKObjectType *stepCpunt = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount];//步数HKObjectType *Height = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeight];//身高HKObjectType *BodyMass = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass];//体重HKObjectType *DistanceWalkingRunning = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceWalkingRunning];//步行+跑步距离HKObjectType *DistanceCycling = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceCycling];//骑行距离//一个集合,数据类型NSSet *healthSet = [NSSet setWithObjects:stepCpunt,Height,BodyMass,DistanceWalkingRunning,DistanceCycling,nil];//[self.healthStore requestAuthorizationToShareTypes:nil readTypes:healthSet completion:nil];//向系统的健康APP请求数据,并回调结果[self.healthStore requestAuthorizationToShareTypes:nil readTypes:healthSet completion:^(BOOL success, NSError * _Nullable error) {if (success) {NSLog(@"requestAuthorization success");[self readHealthData:HKQuantityTypeIdentifierStepCount];[self readHealthData:HKQuantityTypeIdentifierDistanceWalkingRunning];[self readHealthData:HKQuantityTypeIdentifierDistanceCycling];[self readHealthData:HKQuantityTypeIdentifierHeight];[self readHealthData:HKQuantityTypeIdentifierBodyMass];}else{NSLog(@"requestAuthorization error");}}];

具体的数据获的操作

//查询数据
- (void)readHealthData:(NSString* )HKQuantityTypeIdentifierType{//查询采样信息HKSampleType *sampleType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierType];//NSSortDescriptors用来告诉healthStore怎么样将结果排序。NSSortDescriptor *start = [NSSortDescriptor sortDescriptorWithKey:HKSampleSortIdentifierStartDate ascending:NO];NSSortDescriptor *end = [NSSortDescriptor sortDescriptorWithKey:HKSampleSortIdentifierEndDate ascending:NO];/*查询的基类是HKQuery,这是一个抽象类,能够实现每一种查询目标,这里我们需要查询的步数是一个HKSample类所以对应的查询类就是HKSampleQuery。下面的limit参数传1表示查询最近一条数据,查询多条数据只要设置limit的参数值就可以了在这里我们需要定义block里面执行哪些语句*/HKSampleQuery *sampleQuery = [[HKSampleQuery alloc] initWithSampleType:sampleType predicate:nil limit:2 sortDescriptors:@[start,end] resultsHandler:^(HKSampleQuery * _Nonnull query, NSArray<__kindof HKSample *> * _Nullable results, NSError * _Nullable error) {//打印查询结果NSLog(@"resultCount = %ld result = %@",results.count,results);//把结果装换成字符串类型if (results.count!=0) {HKQuantitySample *result = results[0];HKQuantity *quantity = result.quantity;NSString *stepStr = (NSString *)quantity;[[NSOperationQueue mainQueue] addOperationWithBlock:^{//查询是在多线程中进行的,如果要对UI进行刷新,要回到主线程中NSLog(@"最新数据:%@",stepStr);}];}else{NSLog(@"没有健康数据");}}];//执行查询[self.healthStore executeQuery:sampleQuery];
}

##运行结果
在这里

iOS--HealthKit简单使用相关推荐

  1. iOS CAReplicatorLayer 简单动画

    代码地址如下: http://www.demodashi.com/demo/11601.html 写在最前面,最近在看学习的时候,偶然间发现一个没有用过的Layer,于是抽空研究了下,本来应该能提前记 ...

  2. iOS开发------简单实现图片多选功能(Photos.framework篇)

    Photos.framework是iOS8后苹果推出的一套替代AssetsLibrary.framework获取相册资源的原生库,至于AL库,欢迎大家给博文iOS开发--简单实现图片多选功能(Asse ...

  3. 基于iOS的简单计算器(二)

    接上一篇基于iOS的简单计算器(一)皆为po主iOS课程的实验内容. 新增界面 高级计算器:能够进行一些高级的运算比如三角函数.阶乘.对数等. 体质计算器:获取用户的身高体重后,反馈用户的体质指数. ...

  4. iOS上简单推送通知(Push Notification)的实现

    iOS上简单推送通知(Push Notification)的实现 根据这篇很好的教程(http://www.raywenderlich.com/3443/apple-push-notification ...

  5. iOS 类似简单的第三方微博客户端,可进行登录微博浏览相关信息

    Demo地址:https://github.com/ChenNan-FRAM/Fenvo (如果你觉得有用麻烦star一下感激不尽) Fenvo Objective-C, iOS 类似简单的第三方微博 ...

  6. iOS开发-简单工厂模式

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性.概念很长,iOS开发中最常 ...

  7. Xamarin的坑 - 绑定(一) - 拿微信iOS SDK 简单说起

    编者语:Xamarin 并入微软快一年了,在国内推广还是慢,主要有两个方面,Xamarin在国内的本地化不足真正在国内的解决方案基本上没有,第二就是和本土的一些主要SDK接入案例基本上也没有.上述原因 ...

  8. iOS最为简单时间轴(GZTimeLine)

    概述 迄今为止最为简单的时间轴 :可以自定义(类似于美团的送餐信息) 详细 代码下载:http://www.demodashi.com/demo/10797.html 迄今为止 最为简单的时间轴 :可 ...

  9. IOS CoreData 简单使用CURD

    2019独角兽企业重金招聘Python工程师标准>>> iOS在CoreData中简单封装了SQLite,让开发者不需要写sql语句就可以使用SQLite进行CURD操作. 要使用C ...

  10. ios tableview_iOS简单TableView示例教程

    ios tableview In this tutorial we're going to discuss and implement the TableView UI element in our ...

最新文章

  1. java在何时获得对象的确切类型_JAVA面试题(1)
  2. 织梦dedecms实现按照字母搜索的实现方法
  3. C语言:格式字符串中的类型
  4. 如何获取 OSS AccessKeyId、AccessKeySecret
  5. 对分查找的最多次数_「剑指offer题解」数组中出现次数超过一半的数字
  6. 官宣!又一所新大学来了!
  7. idea 父文件_万事开头难!最新MyBatis程序配置教程(IDEA版)
  8. 根据IP地址查询物理位置(IP地址定位库)并且查询当前地址的天气信息(中国气象网)
  9. nexus3 测试操作
  10. HTML5 input类型 range滑动条 介绍与使用
  11. Unity优化——模型合并
  12. 逆向学习实战之--替换哈罗单车图片
  13. 算法提高——JOE的算数
  14. 【vue】移动端扫描二维码
  15. NS-3网络仿真平台搭建及可视化
  16. 博客优化 搜索SEO优化 提高搜索量
  17. 政府云计算的构建选择-刘鑫(政务云 云平台)
  18. Bert albert xlnet gtp
  19. 日文 全角/半角 平假名/片假名 的转换
  20. JCreator的配置

热门文章

  1. 钉钉群机器人关键词自动回复_自动化运维平台Spug测试
  2. VS2017 插件的安装目录
  3. 个人微信开发api文档
  4. Java web项目目录结构以及作用详解
  5. 什么是PERT网络分析?
  6. 西门子plc vb和c语言区别,西门子plc不同编程语言的区别
  7. mean shift 跟踪算法
  8. Android APP完整基础教程(01)开发环境简介
  9. dev chart 绘制图形
  10. Parasoft c++test安装使用导引