要实现计步需要清楚的是iPhone5s、iPhone6、iPhone6 Plus、iPhone6s、iPhone6s Plus使用了M7或者M8处理器,所以可以轻易的实现计步器功能。
所以:5s以下的设备是不支持手机计步。(不过我在测试的时候5也是可以的)
一、HealthKit简述:
HealthKit框架提供了一个结构,应用可以使用它来分享健康和健身数据。HealthKit管理从不同来源获得的数据,并根据用户的偏好设置,自动将不同来源的所有数据合并起来。应用还可以获取每个来源的原始数据,然后执行自己的数据合并。
使用HealthKit特别注意
你的应用不应该将HealthKit收集的数据用于广告或类似的服务。注意,在使用HealthKit框架应用中可以插播广告,但是你不能使用HealthKit中的数据来服务广告。
在没有用户的明确允许下,你不能向第三方展示任何HealthKit收集的数据。即使用户允许,你也只能向提供健康或健身服务的第三方展示这些数据。
你不能将HealthKit收集的数据出售给广告平台、数据代理人或者信息经销商。
如果用户允许,你可以将HealthKit数据共享给第三方用于医学研究。注意是用户允许
你必须明确说明,你和你的应用会怎样使用用户的HealthKit数据。
二、使用Core Motion:外部使用CMPedometer或者CMStepCounter来读取用户的步数和走的里程。
需要注意的是,Core
Motion中的有两种计步:CMStepCounter和CMPedomete。CMPedomete必须iOS8.0以上才可以使用,但是CMPedomete却可以获取更多的运动信息(步数、距离、上下楼层数、速度、节奏、开始和结束时间查询行走相关信息、某一时刻开始监测步数变化),而CMStepCounter只能获取步数。也有那种对两种进行封装的方法。
两者的区别:
其实第一种Healthkit也是使用CMPedometer或CMStepCounter来读入用户的步数和走的里程的,只不过计算方法在手机内部。它是利用
iphone5s 以上的m处理器来获取数据计算了,所以5s以下的设备是不支持 CMPedometer 手机计步的。
直接使用HealthKit计步会有缺点,计步不准,主要是因为HealthKit记录的时区问题,iOS获取时间的时区按中国的时区少了8个小时
最后上代码(因为项目就只需要拿到步数即可,则使用的是CMStepCounter):
1.
2.
3.
4.
5.
2017.3.31 更新
在这里需要设置一下
希望可以给你一点帮助,以上。