OC - iOS7、8及其以上计步器的简单使用
2016-07-15 14:19
337 查看
在iOS 7设备上,计步器开发只能获取到走了多少步,而不能得到其他的数据,在iOS 8的时候,推出了CMPedometerData类,可以获取多个数据。现在让我们来看看计步器基本的功能吧,其实吧,没写之前觉得挺高大上的,写完以后,感觉真的就是那么回事,并不难实现。iOS 7的计步类是 CMStepCounter iOS
8及其以后的计步类是 CMPedometer
首先说说iOS 7 、8及其以上,都要使用的方法
/**
* 是否支持计步器
*/
+ (BOOL)isStepCountingAvailable
类名来调用此方法,检测设备是否支持计步器功能,计步功能的开发需要依赖协处理器,所以要求设备必须是5s及其以上的机型。如果是4s,5,5c,需要另写方法,此篇支持的最低设备为5s。
现在说说iOS 7 实现方法。
/**
* 步数查询(最多支持7天)
*
* param start 开始采集的时间
* param end 结束采集的时间
* param queue 队列
* param handler 查询结果回调
*/
- (void)queryStepCountStartingFrom:(NSDate *)start
to:(NSDate *)end
toQueue:(NSOperationQueue *)queue
withHandler:(CMStepQueryHandler)handler
/**
* 队列步数计数更新处理
*
* param queue
队列
* param stepCounts
步数
* param handler
查询结果回调
*/
- (void)startStepCountingUpdatesToQueue:(NSOperationQueue *)queue
updateOn:(NSInteger)stepCounts
withHandler:(CMStepUpdateHandler)handler;
调用上述两种方法中的任意一种,handler回调中的 numberOfSteps 就是我们需要的步数,将此数值映射到你的数据上,展示出来的就是此时间段,我们一共行走的步数。所不同的是,第一个方法我们可以设置获取步数的时间段,而第二种方法,默认一天 (不过哪里不对,欢迎指出,共同进步)
/**
* 停止步数计数更新
*/
- (void)stopStepCountingUpdates;
这个方法没什么可说的,调用的话,会停止计数器。
iOS 7 大概主要就是这么多方法,下面来说说iOS 8及其以上
/**
* 步数查询(最多支持7天)
*
* param start 开始采集的时间
* param end 结束采集的时间
* param handler 查询结果回调
*/
- (void)queryPedometerDataFromDate:(NSDate *)start
toDate:(NSDate *)end
withHandler:(CMPedometerHandler)handler;
/**
* 计数更新处理
*
* param start 开始时间
* param handler 查询结果回调
*/
- (void)startPedometerUpdatesFromDate:(NSDate *)start
withHandler:(CMPedometerHandler)handler;
同iOS 7一样,两种获取计步数的方式,所不同的是,此 handler 的回调信息要比iOS 7多一些,返回的 CMPedometerData对象中,包含多个属性,不过获取步数的依旧是numberOfSteps,不同的是iOS
7 此属性的类型是 NSInteger类型,而iOS 8中,变成了 NSNumber类型。此外还包括 distance(步行 + 跑步距离)、floorsAscended(上楼距离)、floorsDescended(下楼距离)和一些其他属性,这里不一一说明。依旧把回调中得到的 CMPedometerData 对象属性,映射到你的模型上,就可以得到需要的数据。
/*
* 停止计数更新
*/
- (void)stopPedometerUpdates;
此方法依旧停止计步器
+ (BOOL)isDistanceAvailable;
+ (BOOL)isFloorCountingAvailable;
+ (BOOL)isPaceAvailable;
+ (BOOL)isCadenceAvailable;
这四个方法没什么好说的,都是询问是否支持相应功能的,默认是支持的。其中后两个方法是iOS 9才支持的,使用时要注意版本适配。
到此为止,计步器的基本功能就是这样,哦对了,模拟器是不支持计步器的,所以调试的时候,必须要用真机。
8及其以后的计步类是 CMPedometer
首先说说iOS 7 、8及其以上,都要使用的方法
/**
* 是否支持计步器
*/
+ (BOOL)isStepCountingAvailable
类名来调用此方法,检测设备是否支持计步器功能,计步功能的开发需要依赖协处理器,所以要求设备必须是5s及其以上的机型。如果是4s,5,5c,需要另写方法,此篇支持的最低设备为5s。
现在说说iOS 7 实现方法。
/**
* 步数查询(最多支持7天)
*
* param start 开始采集的时间
* param end 结束采集的时间
* param queue 队列
* param handler 查询结果回调
*/
- (void)queryStepCountStartingFrom:(NSDate *)start
to:(NSDate *)end
toQueue:(NSOperationQueue *)queue
withHandler:(CMStepQueryHandler)handler
/**
* 队列步数计数更新处理
*
* param queue
队列
* param stepCounts
步数
* param handler
查询结果回调
*/
- (void)startStepCountingUpdatesToQueue:(NSOperationQueue *)queue
updateOn:(NSInteger)stepCounts
withHandler:(CMStepUpdateHandler)handler;
调用上述两种方法中的任意一种,handler回调中的 numberOfSteps 就是我们需要的步数,将此数值映射到你的数据上,展示出来的就是此时间段,我们一共行走的步数。所不同的是,第一个方法我们可以设置获取步数的时间段,而第二种方法,默认一天 (不过哪里不对,欢迎指出,共同进步)
/**
* 停止步数计数更新
*/
- (void)stopStepCountingUpdates;
这个方法没什么可说的,调用的话,会停止计数器。
iOS 7 大概主要就是这么多方法,下面来说说iOS 8及其以上
/**
* 步数查询(最多支持7天)
*
* param start 开始采集的时间
* param end 结束采集的时间
* param handler 查询结果回调
*/
- (void)queryPedometerDataFromDate:(NSDate *)start
toDate:(NSDate *)end
withHandler:(CMPedometerHandler)handler;
/**
* 计数更新处理
*
* param start 开始时间
* param handler 查询结果回调
*/
- (void)startPedometerUpdatesFromDate:(NSDate *)start
withHandler:(CMPedometerHandler)handler;
同iOS 7一样,两种获取计步数的方式,所不同的是,此 handler 的回调信息要比iOS 7多一些,返回的 CMPedometerData对象中,包含多个属性,不过获取步数的依旧是numberOfSteps,不同的是iOS
7 此属性的类型是 NSInteger类型,而iOS 8中,变成了 NSNumber类型。此外还包括 distance(步行 + 跑步距离)、floorsAscended(上楼距离)、floorsDescended(下楼距离)和一些其他属性,这里不一一说明。依旧把回调中得到的 CMPedometerData 对象属性,映射到你的模型上,就可以得到需要的数据。
/*
* 停止计数更新
*/
- (void)stopPedometerUpdates;
此方法依旧停止计步器
+ (BOOL)isDistanceAvailable;
+ (BOOL)isFloorCountingAvailable;
+ (BOOL)isPaceAvailable;
+ (BOOL)isCadenceAvailable;
这四个方法没什么好说的,都是询问是否支持相应功能的,默认是支持的。其中后两个方法是iOS 9才支持的,使用时要注意版本适配。
到此为止,计步器的基本功能就是这样,哦对了,模拟器是不支持计步器的,所以调试的时候,必须要用真机。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- iOS App开发中的UISegmentedControl分段组件用法总结
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- iOS中UIAlertView警告框组件的使用教程
- 浅析iOS应用开发中线程间的通信与线程安全问题
- iOS中的UIKeyboard键盘视图使用方法小结
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法