使用
if ([CMPedometer isStepCountingAvailable]&& [CMPedometer isDistanceAvailable]) {
if (!_Pedometer) {
_Pedometer = [[CMPedometer alloc]init];
}
[_Pedometer startPedometerUpdatesFromDate:startDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {
completion(pedometerData.numberOfSteps,pedometerData.distance,error);
}];
}
数据异常解决办法
当频繁使用上述代码获取当天步数时,偶尔会出现数据过大的情况.
此时在调用
- (
void
)startPedometerUpdatesFromDate:(
NSDate
*)start
withHandler:(
CMPedometerHandler
)handler方法之前先强制终止上一次查询操作即可.
完整代码如下:
if ([CMPedometer isStepCountingAvailable]&& [CMPedometer isDistanceAvailable]) {
if (!_Pedometer) {
_Pedometer = [[CMPedometer alloc]init];
}
[_Pedometer stopPedometerUpdates];
[_Pedometer startPedometerUpdatesFromDate:startDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {
completion(pedometerData.numberOfSteps,pedometerData.distance,error);
}];
}