你的位置:首页 > 操作系统

[操作系统]IOS 计步器


这篇博客介绍的是当前比较流行的“计步器”-只是简单的知识点

计步器的实现在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