iOS计步器实现

作者: 小李童学 | 来源:发表于2017-01-04 17:10 被阅读0次

    前几天写一个关于养生和医疗的一个项目,要写一个类似微信运动的计步器功能,只好先去研究一下计步器功能实现。

    之前在我的印象中,直接调用healthKit框架获取苹果的健康应用数据就挺好,结果查了一大堆资料,还真给学到了不少。而且对新手而言,了解比应用更重要,所以本文中尽量减少了代码,偏于展示效果和简单说明。

    需要清楚的是iPhone5s、iPhone6、iPhone6 Plus、iPhone6s、iPhone6s Plus使用了M7或者M8处理器,所以可以轻易的实现计步器功能。

    所以:5s以下的设备是不支持手机计步。

    HealthKit简述:

    HealthKit框架提供了一个结构,应用可以使用它来分享健康和健身数据。HealthKit管理从不同来源获得的数据,并根据用户的偏好设置,自动将不同来源的所有数据合并起来。应用还可以获取每个来源的原始数据,然后执行自己的数据合并。

    计步器功能比较普遍的有两种方法,不排除有什么贼好但是老猥琐的第三方库。

    bid要打开HealthKit功能,Xcode-capabilities-HealthKit打开

    第一种:直接了当的方法,直接调用系统的健康数据,基于HealthKit框架的,但是数据的更新时间不给力,貌似是一个小时更新一次数据,好可怜,如果是实时获取步数,这种方法就不堪入目了。

    效果展示:

    使用HealthKit特别注意

    你的应用不应该将HealthKit收集的数据用于广告或类似的服务。注意,在使用HealthKit框架应用中可以插播广告,但是你不能使用HealthKit中的数据来服务广告。

    在没有用户的明确允许下,你不能向第三方展示任何HealthKit收集的数据。即使用户允许,你也只能向提供健康或健身服务的第三方展示这些数据。

    你不能将HealthKit收集的数据出售给广告平台、数据代理人或者信息经销商。

    如果用户允许,你可以将HealthKit数据共享给第三方用于医学研究。注意是用户允许

    你必须明确说明,你和你的应用会怎样使用用户的HealthKit数据。

    Demo地址:让子弹飞一飞

    第二种:使用Core Motion:外部使用CMPedometer或者CMStepCounter来读取用户的步数和走的里程。

    效果展示:

    Demo:再去飞一飞

    其次,需要注意的是,Core Motion中的有两种计步:CMStepCounter和CMPedomete。CMPedomete必须iOS8.0以上才可以使用,但是CMPedomete却可以获取更多的运动信息(步数、距离、上下楼层数、速度、节奏、开始和结束时间查询行走相关信息、某一时刻开始监测步数变化),而CMStepCounter只能获取步数。也有那种对两种进行封装的方法。Demo:最后一次飞

    两者的区别:

    其实第一种Healthkit也是使用CMPedometer或CMStepCounter来读入用户的步数和走的里程的,只不过计算方法在手机内部。它是利用 iphone5s 以上的m处理器来获取数据计算了,所以5s以下的设备是不支持 CMPedometer 手机计步的。

    直接使用HealthKit计步会有缺点,计步不准,主要是因为HealthKit记录的时区问题,iOS获取时间的时区按中国的时区少了8个小时

    相关文章

      网友评论

        本文标题:iOS计步器实现

        本文链接:https://www.haomeiwen.com/subject/eenovttx.html