最近公司的app中新增加了一个计步器的功能,从网上了搜到了healthKit可以实现记步功能,但是分析后发现HealthKit应该是调用的苹果自己的API来实现的专门为自身的运动手环,苹果手表,电子称来设计的。看到微信也有记步功能。后来又根据同行好友的提示找到了方向,那就是CoreMotion这个框架。这个框架的功能很强大的,可以纪录用户的运动状态,走了多少步,走了多远,什么时候运动了,什么时候运动停止了。加速度等等。这里就不一一的详细说了,这里重点说一下如何记步功能实现。
结合方法来说下哦。

-(void)gotoGetStepCountFrom:(NSDate *)fromeDate to:(NSDate *)toDate CallBack:(void(^)(NSString *steps))callBack{   //根据起始期,终止日期进行查询步行数量//判断记步功能if ([CMPedometer isStepCountingAvailable]) {[[APP_DELEGATE sharedPedometer] queryPedometerDataFromDate:fromeDate toDate:toDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {if (error) {NSLog(@"error====%@",error);}else {//                NSLog(@"AAA步数====%@",pedometerData.numberOfSteps);//                NSLog(@"AAA距离====%@",pedometerData.distance);NSString *numberOfSteps = [NSString stringWithFormat:@"%@",pedometerData.numberOfSteps];callBack(numberOfSteps);}}];}else{NSLog(@"记步功能不可用");}}

这个方法是一个pull方法,就是用户需要用的时候可以调用来获取某个时间段的步行数,步行的距离。另外有一点需要注意:最多只能获取最近7天的数据,所以小伙伴们用的时候注意下哦,另外这个数据苹果只是做了记录步数,时间点的 操作,具体的数据整理分析的工作还是要我们去做才能转化为我们用的数据。这个方法主要就是用来查看运动记录用的
下面给大家介绍一下实时记录运动步数的方法。这个方法是一个push方法就是只要运动的步数发生改变就会触发该方法,app关掉,或者挂起状态除外哦。但是该方法虽然没有执行,但是手机仍然在记录用户的运动状态,等到下次用户开启app的时候,可以把之前的运动书去读取出来。废话不多说了,直接上代码:

-(void)gotoOpenStepCountFunction{  //打开计步器功能后台记步的方法_pedometer = [APP_DELEGATE sharedPedometer];[NSUSER_DEFAULTS setBool:YES forKey:@"startStepCount"];[NSUSER_DEFAULTS synchronize];if ([CMPedometer isStepCountingAvailable]) {[_pedometer startPedometerUpdatesFromDate:[NSDate date] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {if (error) {NSLog(@"error====%@",error);[PAFFHUD showAlertNoImageWithText:@"计步器功能开始失败"];[NSUSER_DEFAULTS setBool:NO forKey:@"startStepCount"];[NSUSER_DEFAULTS synchronize];}else {NSLog(@"BBB步数====%@",pedometerData.numberOfSteps);NSLog(@"BBB距离====%@",pedometerData.distance);NSDictionary *dic =[NSDictionary dictionaryWithObjectsAndKeys:[NSString stringWithFormat:@"%@",pedometerData.numberOfSteps],@"numberOfSteps", nil];[[NSNotificationCenter defaultCenter] postNotificationName:@"numberOfSteps" object:nil userInfo:dic];}}];}else{DLog(@"计步器不可用");[PAFFHUD showAlertNoImageWithText:@"计步器不可用"];[NSUSER_DEFAULTS setBool:NO forKey:@"startStepCount"];[NSUSER_DEFAULTS synchronize];}}-(void)gotoCloseStepCountFucntion{if ([CMPedometer isStepCountingAvailable]) {_pedometer = [APP_DELEGATE sharedPedometer];[NSUSER_DEFAULTS setBool:NO forKey:@"startStepCount"];[NSUSER_DEFAULTS synchronize];[_pedometer stopPedometerUpdates];}}

另外需要说明的是开启后台记步实时更新的这个方法,如果本来就是开启的话,那么这个方法就不再执行了,如果没有的话才会执行的。但是若开启的话,从开始的时间点步行数会被重置为0.这点需要注意下。
当然下面的close的方法直接就是关闭后台记步实时跟新的功能了。不想用的时候关掉就好了。
最基本的的计步器到这里就说完了,建议大家要做的可以看看官方的API,里面都有方法的说明的。可以更好的理解。
下面把我的dem分享给大家,如果大家觉得哪些地方理解有偏差的或者不对的话,建议大家提一下建议哦,大家一块进步。
demo下载地址:计步器demo
如果感兴趣的话可以看我的下一篇博客《iOS计步器功能实现之CoreMotion如何读取数据(二)》
参考博客:http://www.jianshu.com/p/e5f332f9b27c

iOS计步器功能实现之CoreMotion(一)相关推荐

  1. iOS 计步器的几种实现方式

    代码地址如下: http://www.demodashi.com/demo/11658.html 这篇文章介绍两种可以获取计步数据的方法,一种是采用CMPedometer获取手机计步器数据,另一种是采 ...

  2. iOS Simulator功能介绍关于Xamarin IOS开发

    iOS Simulator功能介绍关于Xamarin IOS开发 iOS Simulator功能介绍 在图1.38所示的运行效果中,所见到的类似于手机的模型就是iOS Simulator.在没有iPh ...

  3. 谷歌称已实现量子霸权;iOS 捷径功能被诉侵权;Chrome 78 Beta 发布 | 极客头条

    快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...

  4. iOS 分享功能开发

    iOS 开发过程中可能会遇到需要进行第三方分享的需求,比如向QQ,微信,微博等分享 如下图 我们今天要讲到的方式是使用了一个第三方工具: http://www.sharesdk.cn 一,注册账号 去 ...

  5. ios 获取是否静音模式_果粉感动:部分iOS“新功能”早已被安卓玩坏

    一年一度的WWDC大会如期举行,今年不仅展示了全新的iOS.iPadOS以及macOS.当然,具体更新了什么相信早已经被各大媒体报道出来,本文并不是重复报道,相反的,iOS经过了13代的发展,有开创性 ...

  6. iOS项目功能模块封装SDK使用总结

    一.功能模块SDK封装步骤: 1.创建IOS Framework工程 先我们需要创建一个iOS的CocoaTouch工程,点击Next,输入我们Framework的名字即可.下方我们暂且将该Frame ...

  7. iOS语音识别功能实现

    本人有若干成套学习视频, 可试看! 可试看! 可试看, 重要的事情说三遍 包含Java, 数据结构与算法, iOS, 安卓, python, flutter等等, 如有需要, 联系微信tsaievan ...

  8. IOS实现扫描二维码,利用系统API实现,看了这篇IOS扫描功能再也不用求人了。

    如今在国内无论走到哪里,只要是涉及支付的方面都可以使用支付宝或微信扫个二维码进行付款.现在二维码随处可见,二维码支付,二维码点餐,二维码坐公交,二维码做地铁,广告宣传页上, 电视台节目上等等.另外连乞 ...

  9. ios 分享功能 集成友盟分享

    1.集成友盟分享,需要先注册一个友盟账号,注册地址 友盟开发者平台官网  友盟集成文档 友盟sdk下载地址友盟sdk下载地址 2,成功下载sdk集成后,微信分享需要配置一下 新浪微博 之类到同样配置就 ...

最新文章

  1. ASP.NET 2.0 - 选用DataSet或DataReader
  2. 整数不少于12可以表示为两个复合数字的和
  3. pip 升级 pip
  4. 【设计模式】11、享元模式
  5. 通过vb代码将多个excel合并成一个
  6. Android内存泄漏检测工具大全
  7. PHP将图片剪切成圆形
  8. 第一章 核磁共振的物理学基础
  9. 免Fan,国内直接访问,Instagram!文末还有…………
  10. java语法 chm_使用java代码打开chm格式的帮助文档
  11. Top K Frequent Elements
  12. iRingg 1.0.48 iPhone铃声制作
  13. 正则表达必须包含数字字母和特殊字符
  14. java spark 遍历rdd_Spark入门(四):RDD基本操作
  15. AliCDN,盛开在云端的花朵
  16. 计算机系统基础|计算机如何区分指令和数据
  17. MIGO 行项目屏幕增强创建实例
  18. 记一次简单的自动投票操作
  19. 什么是 MyBatis?
  20. 训练你的逆向思维能力

热门文章

  1. python--模拟蜂窝网(https)登陆总结
  2. [java面试]javascript中dom取值问题radio名字一样归属于同一个组,求点击的是哪一个
  3. java jetty启动_[深入浅出Jetty 04]Jetty的启动方式
  4. 《c语言入门题目6》存入本金,根据银行年利率算钱
  5. java配置文件中数据库密码加密
  6. nokia 5300 j2me开发问题
  7. C++ 猜数字游戏之全英文版
  8. JSP失物招领系统源码JSP寻物启事JSP校园失物招领系统-毕业设计-课程设计
  9. Hadoop之——Hadoop3.x运行自带的WordCount报错Container exited with a non-zero exit code 1.
  10. 综合实验 HUB-SPOKEN结构