healthkit框架使用
最近项目需要,可能需要在原有的自行车APP上添加healthkit框架,所以就查看了一些healthkit的资料,发现code4APP竟然没有,github上面的资料也比较少,还有不少用swift写的,自己就研究用oc写healthkit。比较3月21号的苹果发布会虽然出了se手机并不出色,但是更加突出了环境和健康,healthkit在未来医疗健康、运动锻炼领域应该会大有所为。
1、要使用healthkit框架首先要在capabilities里面打开health kit
2、判断设备是否能够使用healthkit框架
- (BOOL)isHealthDataAvailable{
return [HKHealthStore isHealthDataAvailable];
}
3、请求授权设置,所有的设备要请求授权成功后才能进行使用healthkit的方法操作
//一组包含要共享的数据类型,可以写入的数据
NSSet *shareObjectTypes = [NSSet setWithObjects:
//[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceWalkingRunning],
//[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount],
[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceCycling],
nil];
//一组包含要读取的数据类型,可以读取的数据
NSSet *readObjectTypes = [NSSet setWithObjects:
//[HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierDateOfBirth],
[HKObjectType characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierBiologicalSex],
//[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount],
[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceCycling],
//[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceWalkingRunning],
[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass],
[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeight],
nil];
// Request access
[self.healthStore requestAuthorizationToShareTypes:shareObjectTypes
readTypes:readObjectTypes
completion:^(BOOL success, NSError *error) {
if(success == YES)
{
NSLog(@">>>>>授权成功");
}
else
{
NSLog(@">>>>>授权失败");
NSLog(@"error = %@",error);
}
}];
4、读取数据
读取性别
HKBiologicalSexObject *bioSex = [_healthStore biologicalSexWithError:&error];
NSString *sexString;
switch ((int)bioSex.biologicalSex) {
case HKBiologicalSexNotSet:
sexString = @"NotSet";
break;
case HKBiologicalSexFemale:
sexString = @"Female";
break;
case HKBiologicalSexMale:
sexString = @"Male";
break;
case HKBiologicalSexOther:
sexString = @"Other";
break;
default:
break;
读取身高 ,创建好请求类型,其中要注意请求回来的数据是一组数字,可以设置请求数据的起始时间,例子中请求的是身高,请求回结果后我取得是最后一位,最后需要注意把单位换算,转换成需要的数据的类型,如meterUnit, 如果是体重就是克,可以用gramUnit
HKSampleType *sampleType = [HKSampleType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeight];
NSDate *startDate, *endDate;
NSPredicate *predicate = [HKQuery predicateForSamplesWithStartDate:startDate endDate:endDate options:HKQueryOptionStrictStartDate];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:HKSampleSortIdentifierStartDate ascending:YES];
HKSampleQuery *sampleQuery = [[HKSampleQuery alloc] initWithSampleType:sampleType predicate:predicate limit:HKObjectQueryNoLimit sortDescriptors:@[sortDescriptor]resultsHandler:^(HKSampleQuery * _Nonnull query, NSArray<__kindof HKSample *> * _Nullable results, NSError * _Nullable error) {
if (!error && results) {
HKQuantitySample *samples = [results lastObject];
double heightMeter = [samples.quantity doubleValueForUnit:[HKUnit meterUnit]];
if (self.delegate && [self.delegate respondsToSelector:@selector(receiveHealthKitHeight:)]) {
[self.delegate receiveHealthKitHeight:heightMeter];
}
}
}];
//使函数生效
[_healthStore executeQuery:sampleQuery];
5、写入数据,其中以写入骑行数据为例,注意创建时间时用[NSDate dateWithTimeIntervalSinceNow:0],这是结束时间,开始时间可以以当前时间为截点,向前推
[NSDate dateWithTimeIntervalSinceNow:-time],请求返回的数据要设置,是枚举类型,11是meter。
NSDate *startDate, *endDate;
endDate = [NSDate dateWithTimeIntervalSinceNow:0];
startDate = [NSDate dateWithTimeIntervalSinceNow:-time];
NSLog(@"startdate = %@, endDate = %@",startDate,endDate);
NSString *unitIdentifier = HKQuantityTypeIdentifierDistanceCycling;
HKQuantityType *quantityTypeIdentifier = [HKObjectType quantityTypeForIdentifier:unitIdentifier];
HKQuantity *quantity = [HKQuantity quantityWithUnit:[HKUnit unitFromLengthFormatterUnit:11] doubleValue:length];
HKQuantitySample *temperatureSample2 = [HKQuantitySample quantitySampleWithType:quantityTypeIdentifier quantity:quantity startDate:startDate endDate:endDate metadata:nil];
HKHealthStore *store = [[HKHealthStore alloc] init];
[store saveObject:temperatureSample2 withCompletion:^(BOOL success, NSError *error) {
if (success) {
NSLog(@"保存成功");
}else {
NSLog(@"保存失败");
}
}];
下面是代码github的链接https://github.com/WadeZhanggp/Healthkit-Demo
healthkit框架使用相关推荐
- HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID
HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID HealthKit开发准备工作 在开发一款HealthKit应用程序时,首先需要讲解HealthKit中有哪些类,在i ...
- iOS利用HealthKit框架从健康app中获取步数信息
微信和QQ的每日步数最近十分火爆,我就想为自己写的项目中添加一个显示每日步数的功能,上网一搜好像并有相关的详细资料,自己动手丰衣足食. 统计步数信息并不需要我们自己去实现,iOS自带的健康app已经为 ...
- iOS 使用HealthKit框架实现获取今日步数
Demo地址:我的github仓库 HealthKit hey!宝宝又来更新博客了! 今天早上查看天气,发现自己缺少一个查看天气的APP, 于是下载了一个"墨迹天气",结果宝宝在欣 ...
- HealthKit 框架详细解析
HealthKit框架详细解析(一) -- 基本概览(一) HealthKit框架详细解析(二) -- 基本概览(二)
- HealthKit 框架体系
对于一类应用程序来说,要进行开发,首先需要熟悉它的框架体系,即类.以下我们针对 HealthKit 中所使用的类进行了总结,如表 1-1 所示. 表 1-1 HealthKit框架体系 类 功能 NS ...
- 浅谈一下HealthKit框架使用注意点
日常我们都会接触到上传步数参加各种APP的活动,来赢取虚拟货币或者实物奖品.于是我对此发生了浓厚的兴趣,决定对APP获取步数的原理进行研究. 简单说一下什么是HealthKit.就是苹果在IOS8系统 ...
- HealthKit开发快速入门教程大学霸内部教程
HealthKit开发快速入门教程大学霸内部教程 国内第一本HealthKit专向教程.本教程详细讲解iOS中,如何使用HealthKit框架开发健康应用.最后,本教程结合HealthKit ...
- iOS Healthkit 使用探索分析
一 基本认知层面: HealthKit框架提供了一个结构,应用可以使用它来分享健康和健身数据.HealthKit管理从不同来源获得的数据,并根据用户的偏好设置,自动将不同来源的所有数据合并起来.应用还 ...
- iOS中 HeathKit框架学习 步数统计等 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博!iOS开发者交流QQ群: 446310206 HeathKit框架学习 本文结构 简介 用户数据安全及隐私 Heat ...
- HealthKit开发教程Swift版:起步
(原文:HealthKit Tutorial with Swift: Getting Started 作者:Ernesto García 译者:Mr_cyz ) HealthKit是iOS 8中的新的 ...
最新文章
- (转帖)数据库时代的终结
- JS高级进阶之ECMAScript 常见面试题
- jdk1.8_googleV3免费下载(API中文文档)
- HashMap源码解释
- 使用加速度计进行崩溃检测
- html5d调用百度语音,易语言调用百度语音平台实现文字转换语音功能的代码
- 20一个自定义集合的自述
- 完美C++(第5版)(双色)
- opensuse 安装 Anaconda3 之后出现Could not start d-bus. Can you call qdbus?
- 闲置域名解析到自己的博客
- win7无法连接WIFI,安装无线驱动 AR9485 WIFI Driver for Windows 7 (32-bit, 64-bit)
- 安装java8和tomcat_jdk1.8.0+tomcat8.0安装
- 素数筛(筛选法求素数)
- VoLTE的基本介绍
- Codeforces Round #606 (Div. 2) A ~ C
- CSP 复赛注意事项
- 第九章:Android开发之Service
- 面向制造和装配的产品设计指南 Ch.2 学习笔记
- CLR/CIL/CTS/CLI/BCL/FCL
- 【H5】 两种屏幕宽度大小自适应方式
热门文章
- 为Linux安装虚拟PDF打印机
- Scanf 用法和注意事项
- 2048小游戏(Java)源码解析及源代码打包
- 单片机简易数字钟c语言程序,用AT89C51/AT89S52单片机制作的简易数字钟
- 靶机渗透练习06-driftingblues6 (利用脏牛提权)
- 计算机丢失d3dx935.dll,d3dx943.dll丢失的解决方法
- HPZ420 工作站主板图
- 举例 微积分 拉格朗日方程_(完整word版)拉格朗日方程的应用及举例08讲
- C++入侵电脑远程控制,体验一把做黑客的感觉!
- 远程网络教学系统用例图