这篇博客介绍的是当前比较流行的“计步器”-只是简单的知识点
计步器的实现在IOS8开始进行了改变。
但是我会对之前之后的都进行简单介绍。
IOS 8 -
// // ViewController.m // CX 计步器 // // Created by ma c on 16/4/12. // Copyright © 2016年 bjsxt. All rights reserved. // #import "ViewController.h" #import <CoreMotion/CoreMotion.h>@interface ViewController ()@property (nonatomic, strong) CMStepCounter * counter;@end@implementation ViewController#pragma mark - <懒加载> - (CMStepCounter *)counter{if (!_counter) {_counter = [[CMStepCounter alloc]init];}return _counter; }- (void)viewDidLoad {[super viewDidLoad];//判断计步器是否可用if (![CMStepCounter isStepCountingAvailable]) {NSLog(@"计步器不可用");return;}//开始计步//startStepCountingUpdatesToQueue 选择在哪个线程里进行//updateOn 对应的是每隔几秒后回调下面的block[self.counter startStepCountingUpdatesToQueue:[NSOperationQueue mainQueue] updateOn:2 withHandler:^(NSInteger numberOfSteps, NSDate * _Nonnull timestamp, NSError * _Nullable error) {if (error) {return ;}NSLog(@"可以在这里进行一些操作");}]; }@end
IOS 8 +
// // ViewController.m // CX 计步器 // // Created by ma c on 16/4/12. // Copyright © 2016年 bjsxt. All rights reserved. // #import "ViewController.h" #import <CoreMotion/CoreMotion.h>@interface ViewController ()@property (nonatomic, strong) CMPedometer * meter;@end@implementation ViewController#pragma mark - <懒加载> - (CMPedometer *)meter{if (!_meter) {_meter = [[CMPedometer alloc]init];}return _meter; }- (void)viewDidLoad {[super viewDidLoad];//判断计步器是否可用if (![CMPedometer isStepCountingAvailable]) {NSLog(@"计步器不可用");return;}//开始计步//在一段时间内的部步数与距离[self.meter queryPedometerDataFromDate:[NSDate date] toDate:[NSDate dateWithTimeIntervalSinceNow:60*60] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {if (error){NSLog(@"error===%@",error);}else {NSLog(@"步数===%@",pedometerData.numberOfSteps);NSLog(@"距离===%@",pedometerData.distance);}}]; }@end