我使用CMPedometer設計應用程序,並且有一個奇怪的問題。我從我的客戶端登錄,我看這個CMPedometerData,想想真不正確的,我無法理解爲什麼會是這樣CMPedometerData中的結束日期不正確
[2017年4月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(這是第一次開始後的CMPedometerDataPedometerUpdatesFromDate是lau nched從後臺返回後 - 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;
...
}];
}
我理解,這是因爲手機的的時間。如果我們在iPhone上使用自動時間,那麼一切都會好的,但如果我們在手機上設置日期,它將不會正確 – Nikita
您的計步器定義是什麼?向我們展示代碼 – brianLikeApple