使用
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);
}];
}
本文介绍如何在iOS应用中使用CoreMotion框架获取用户的步数和行走距离,并提出了一种解决数据异常的有效方法:在启动数据更新前先停止任何正在进行的更新任务。

被折叠的 条评论
为什么被折叠?



