iOS计步实现

要实现计步需要清楚的是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.

iOS计步实现_第1张图片

3.

iOS计步实现_第2张图片

4.

iOS计步实现_第3张图片

5.

iOS计步实现_第4张图片

2017.3.31 更新

在这里需要设置一下


希望可以给你一点帮助,以上。

你可能感兴趣的:(iOS计步实现)