gpt4 book ai didi

ios - CMPedometerData 中的结束日期不正确

转载 作者:技术小花猫 更新时间:2023-10-29 10:40:12 24 4
gpt4 key购买 nike

我用 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 steps 3 distance 2.130000000004657 floorsAscended (null) floorsDescended (null) currentPace (null) currentCadence (null) averageActivePace 0>

如您所见,我的客户(我无法重现此错误)从方法 startPedometerUpdatesFromDate 获取了计步器数据,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;
...
}];
}

最佳答案

我不认为这是可以避免的,因为它取决于太多的外部因素。

你可以做的是使用逻辑来过滤/排列数据,因为你知道任何比“现在”日期更新的数据实际上会早于现在,所以如果你只是对这些步骤或类似的东西感兴趣,那么就得到伯爵。

如果您真的对确切的时间和步骤感兴趣,那么我可以想到 3 个备选方案:

1) 将时间置换数据视为已损坏。

2) 使用来自外部源(服务器)的时间而不是设备时间。

3) 使用此处指定的内部时钟进行一些复杂的时间管理:Is there a clock in iOS that can be used that cannot be changed by the user

关于ios - CMPedometerData 中的结束日期不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43357070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com