2017-04-11 21 views
12

मैं सीएमपीडोमीटर के साथ ऐप डिज़ाइन करता हूं और एक अजीब समस्या है। मैं अपने ग्राहक से लॉग है और मैं इस CMPedometerData देखो, मैं सच में गलत लगता है कि और मैं नहीं कर सकते समझ में यह क्यों इतनासीएमपीडोमीटर डेटा में गलत अंतराल

है [2017/04/11 20:16:34 +0000] CMPedometerData, STARTDATE 2017- 04-11 20:16:32 +0000 समाप्ति 2017-04-11 20:18:41 +0000 चरण 3 दूरी 2.130000000004657 फर्शअनुक्रमित (शून्य) मंजिलें डिस्केन्डेड (शून्य) वर्तमान स्पेस (शून्य) वर्तमान कैडेंस (शून्य) औसत क्रियाशीलता 0>

जैसा कि आप मेरे क्लाइंट को देख सकते हैं (मैं इस त्रुटि को पुन: उत्पन्न नहीं कर सकता) विधि startPedometerUpdatesFromDate से pedometerData मिला और अंतराल 2017-04-11 20:18:41 अब 2017-04-11 20:16:34 से बड़ा है (यह पहले था सीएमपीडोमीटरडेटा प्रारंभ करने के बाद प्रीमीटरमीटरडेट्सडेटाडेट लॉउ था पृष्ठभूमि से लौटने के बाद 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; 
      ... 
    }]; 
} 
+1

मैं समझ गया कि यह फोन के समय की वजह से है: यहां निर्धारित

3) आंतरिक घड़ी का उपयोग करके कुछ जटिल समय प्रबंधन करते हैं। अगर हम आईफोन पर स्वचालित समय का उपयोग करते हैं तो सब ठीक हो जाएगा, लेकिन अगर हम फोन पर डेट सेट करते हैं तो यह – Nikita

+0

सही नहीं होगा आपकी पैडोमीटर परिभाषा क्या है? हमें कोड दिखाएं – brianLikeApple

उत्तर

0

मुझे नहीं लगता कि इस से बचा जा सकता है के रूप में यह भी कई बाह्य कारकों पर निर्भर करता है।

आप क्या कर सकते हैं डेटा को फ़िल्टर/व्यवस्थित करने के लिए तर्क का उपयोग करना है क्योंकि आप जानते हैं कि "अब" तिथि के लिए नया डेटा अब वास्तव में पहले होगा, इसलिए यदि आप केवल चरणों या कुछ समान में रुचि रखते हैं तो बस गिनती पाएं

यदि आप वास्तव में सही समय और कदम में रुचि रखते तो मैं 3 विकल्प के बारे में सोच सकते हैं:

1) के रूप में भ्रष्ट समय विस्थापित डेटा पर विचार करें।

2) डिवाइस समय के बजाय बाहरी स्रोत (सर्वर) से समय का उपयोग करें। Is there a clock in iOS that can be used that cannot be changed by the user

संबंधित मुद्दे