1. 程式人生 > >IOS 計步器

IOS 計步器

property view 博客 control times nbsp 分享 img 流行

這篇博客介紹的是當前比較流行的“計步器”-只是簡單的知識點

計步器的實現在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
技術分享

IOS 計步器