這篇博客介紹的是當前比較流行的“計步器”-只是簡單的知識點
計步器的實現在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
?