Nik*_*ita 12 objective-c ios pedometer
我用CMPedometer设计应用程序,有一个奇怪的问题.我有来自我的客户的日志,我看这个CMPedometerData,我认为真的不正确,我不明白为什么会这样
[2017-04-11 20:16:34 +0000] CMPedometerData,startDate 2017-04-11 20:16:32 +0000 endDate 2017-04-11 20:18:41 +0000步3距离2.130000000004657 floorsAscended(null) floorsDescended(null)currentPace(null)currentCadence(null)averageActivePace 0>
正如你可以看到我的客户端(我无法重现这个错误)从方法得到startPedometerUpdatesFromDate
pedometerData和endDate 2017-04-11 20:18:41比现在更大2017-04-11 20:16:34(它是startPedometerUpdatesFromDate之后的第一个CMPedometerData从背景返回后启动 - willEnterForeground
方法).也许有人已经遇到过类似的问题?
我的代码部分:
- (void)didEnterBackground {
dispatch_async(dispatch_get_main_queue(), ^{
[[Pedometer sharedInstance].motionActivityManager stopActivityUpdates];
[[Pedometer sharedInstance].pedometer stopPedometerUpdates];
});
}
- (void)willEnterForeground {
NSDate *nowDate = [NSDate new];
/* here is request to get historical data from lastDateUpdate (store in database) to now date */
[[Pedometer sharedInstance] importDataFrom:lastDateUpdate endDate:nowDate completion:^{
dispatch_async(dispatch_get_main_queue(), ^{
/* show info */
});
}];
dispatch_async(dispatch_get_main_queue(), ^{
[self startUpdatingData:nowDate];
});
lastDateUpdate = nowDate;
}
- (void)startUpdatingData:(NSDate *)fromDate {
NSOperationQueue *activityQueue = [[NSOperationQueue alloc] init];
[[Pedometer sharedInstance].motionActivityManager startActivityUpdatesToQueue:activityQueue withHandler:^(CMMotionActivity * _Nullable act) {
...
}];
[[Pedometer sharedInstance].pedometer startPedometerUpdatesFromDate:fromDate withHandler:^(CMPedometerData * _Nullable pedometerData1, NSError * _Nullable error) {
...
NSLog(@"%@", pedometerData1);
...
lastDateUpdate = pedometerData1.endDate;
...
}];
}
Run Code Online (Sandbox Code Playgroud)
我认为这是无法避免的,因为它取决于太多的外部因素。
您可以做的是使用逻辑来过滤/排列数据,因为您知道比“现在”日期更新的任何数据实际上都会在现在之前,因此,如果您只对步骤或类似的内容感兴趣,那么只需获取计数即可。
如果您确实对确切的时间和步骤感兴趣,那么我可以想到 3 个替代方案:
1) 将时间移位的数据视为已损坏。
2) 使用外部源(服务器)的时间而不是设备时间。
3)通过使用内部时钟进行一些复杂的时间管理,如下所示:iOS中有一个可以使用但用户无法更改的时钟
归档时间: |
|
查看次数: |
253 次 |
最近记录: |