自iOS7以來(lái)甜孤,Apple官方API給開(kāi)發(fā)者提供了單獨(dú)的類來(lái)查詢一定時(shí)間內(nèi)的健康數(shù)據(jù)統(tǒng)計(jì),比如步數(shù)畏腕。
CMStepCounter
這是一個(gè)自iOS7開(kāi)始可以使用的類缴川,但是在iOS8中即被舍棄,換用了新的類CMPedometer來(lái)替換其功能的實(shí)現(xiàn)描馅。
盡管如此,其在iOS7設(shè)備上進(jìn)行數(shù)據(jù)采集還是很重要:
if (!([CMStepCounter isStepCountingAvailable] || [CMMotionActivityManager isActivityAvailable])) {
return;
}
self.operationQueue = [[NSOperationQueue alloc] init];
//更新label
if ([CMStepCounter isStepCountingAvailable])
{
self.stepCounter = [[CMStepCounter alloc] init];
[self.stepCounter startStepCountingUpdatesToQueue:self.operationQueue?updateOn:2?withHandler:^(NSInteger numberOfSteps, NSDate *timestamp, NSError *error){
dispatch_async(dispatch_get_main_queue(), ^{
if (error){
UIAlertView *error = [[UIAlertView alloc] initWithTitle:@"提示信息" message:@"獲取步數(shù)出錯(cuò)" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[error show];
}else {
self.autoSteps = numberOfSteps;
DebugLog(@"%@", [NSString stringWithFormat:@"Step count: %d", self.autoSteps]);
}
});
}];
}
}
CMPedometer
這是一個(gè)在iOS8以后替代上面記步類實(shí)現(xiàn)采集數(shù)據(jù)的功能况凉。
- (void)startPedometerUpdatesFromDate:(NSDate *)start withHandler:(CMPedometerHandler)handler;
- (void)queryPedometerDataFromDate:(NSDate *)start?toDate:(NSDate *)end?withHandler:(CMPedometerHandler)handler;
CMPedometer *pedometer = [[CMPedometer alloc]init];
//判斷記步功能
if ([CMPedometer isStepCountingAvailable]) {
[pedometer startPedometerUpdatesFromDate:[NSDate date] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {
//
if (error) {
NSLog(@"error = %@",error);
} else {
NSLog(@"%@",pedometerData);
}
}];
}else{
NSLog(@"記步功能不可用");
}