iOS HealthKit获取步数

作为一个天天喊着减肥的资深女程序媛儿胖纸,对于减肥的APP还是十分关注的,尤其是运动步数排行榜,其实也只是看到步数排名的那一小小会儿时间会不开森罢了,嘿嘿。恰逢开发需要,于是乎,,,下定决心研究一下这个步数的计步原理。现在iOS开发中获取步数一般两种方式,一种是利用重力感应通过一系列复杂的计算方式计算得到,另一种就是走捷径直接获取iPhone健康里的计步数据了。先写一个走捷径的吧,记录一下走过的坑儿。具体的原理神马的需要的时候再问度娘吧。

第一步:工程中引入HealthKit.framework,在需要实现的地方#import .

第二步:检查设备是否支持HealthKit.(现在基本上都支持的,但是保险起见还是加上吧).

iOS HealthKit获取步数_第1张图片
检查设备是否支持.jpg

第三步:授权,即APP跳转到“访问健康数据”界面,把步数一行的开关打开,否则不能正常获取数据.

iOS HealthKit获取步数_第2张图片
授权.jpg

第四步:读取一天天的步数.


iOS HealthKit获取步数_第3张图片
一天为单位的步数.jpg

其中,步数是读取了手机健康里的所有数据,since1970.  

HKStatistics *lastStatics = [result.statistics lastObject] 获取了今天的到目前为止的步数。

result.statistics 是返回的每一天的所有的数据的数组集合,需要的话可以利用 for (HKStatistics *statistic in result.statistics) 取出每一天的数据


然而我们的APP中要获得的不仅仅是当前你今天走了多少步,还需要得到午饭后(12:00-14:00)和晚饭后(18:00-20:00)的步数,这就需要获取步数的时间单位是小时而不是天了。

iOS HealthKit获取步数_第4张图片
只取今天的数据.jpg
iOS HealthKit获取步数_第5张图片
以2小时为一个时间单位的数据.jpg

for (HKStatistics *statistic in result.statistics)打印出来数据的形式是这样的:2017-05-24 00:00:00 +0000 - 2017-05-24 02:00:00 +0000. 所以我取了数据的第11位和第12位,即 时 的位置. 判断时的位置是否是12,是的话取出来的就是12:00-14:00的步数了。

另外,它默认的是零时区的时间,所以我们还得转成成北京时间,转换方法如下:

iOS HealthKit获取步数_第6张图片
转成当地时间.jpg

OK,it's  all. 如有错误还请看到的亲给予指导。

你可能感兴趣的:(iOS HealthKit获取步数)