2012-01-03 9 views
33

आईओएस 5 के लिए नया नाइकी + जीपीएस एप्लीकेशन पृष्ठभूमि में एक्सेलेरोमीटर घटनाओं को संसाधित करने में सक्षम है (इस प्रकार इनडोर ट्रेडमिल ट्रैकिंग के लिए अनुमति देता है)। यह कैसे संभव है? जब मैं अपना आवेदन पृष्ठभूमि में डालता हूं, तो यह घटनाओं को प्राप्त करता है। मैं मानक यूआईएक्सेलेरोमीटर एपीआई का उपयोग करता हूं।आईफोन पर नाइके + जीपीएस पृष्ठभूमि में एक्सेलेरोमीटर अपडेट कैसे प्राप्त करता है?

+0

कृपया, किसी और को यह पुष्टि कर सकते हैं? ऐप्पल – AlexeyVMP

+3

के लिए शानदार लग रहा है मैं पुष्टि कर सकता हूं कि यह काम करता है! आपको केवल एक चीज को पूरा करने की आवश्यकता है - पृष्ठभूमि में ऐप चलाने के लिए किसी भी पृष्ठभूमि मोड का उपयोग करें (स्थान अपडेट, प्लेबैक, वीओआईपी या बीटी 4 केंद्रीय)। – AlexeyVMP

+2

हे दोस्तों, अब तक आपके काम के लिए धन्यवाद! मैंने पैडोमीटर ऐप के लिए आपके दृष्टिकोण की कोशिश की। यह लगभग मेरे लिए काम करता है। मैं स्थान पृष्ठभूमि मोड का उपयोग करता हूं और निष्क्रिय होने के ऐप को रोकने के लिए हर 9 मिनट में उपयोगकर्ता स्थान अपडेट करता हूं - यह तंत्र काम करता है लेकिन अद्यतन कतार में पहले 9 मिनट के बाद कोई डेटा नहीं होता है। क्या आपको पता है कि क्या गलत हो रहा है या शायद आप मेरी समस्या के बारे में थोड़ा अधिक विस्तृत संकेत/समाधान प्रदान कर सकते हैं? एक बार फिर धन्यवाद! हेंस – Hannes

उत्तर

12

, इस प्रश्न का उत्तर प्रदान भले ही यह पहले से ही स्वयं जवाब है की खातिर ...

"आप नए कोर मोशन एपीआई का उपयोग करते हैं, तो आप अद्यतन पृष्ठभूमि में प्राप्त कर सकते हैं।" pedometer के अद्यतन के साथ ब्लॉक, मैं विधि को बंद करने और जीपीएस पर चालू करने के लिए कहते हैं जब

- (void)startAccelerationCollection { 
    [self.motionManager startAccelerometerUpdatesToQueue:[[NSOperationQueue alloc] init] 
              withHandler:^(CMAccelerometerData *data, NSError *error) { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      [self.accelerometerReadings addObject:data]; 
     }); 
    }]; 
} 
+4

यह होम बटन दबाए जाने के बाद काम नहीं करता है। हम इसे कैसे ठीक कर सकते हैं? – Sumoanand

+0

@ सुमनंद - हाँ। यह तब काम नहीं करता जब ऐप निलंबित हो जाता है (जब उपयोगकर्ता होम बटन दबाता है या एप इत्यादि स्विच करता है) – kamyFC

+0

इस पर कोई अपडेट? – Nil

0

:

यहाँ एक उदाहरण है। मेरे लिए यह समस्या तब तय हुई जब उपयोगकर्ता घर दबाता है और स्पॉटिफ़ाई पर संगीत सुनने के लिए एक घंटे तक रहता है।

परियोजना सेटिंग्स सक्षम करने के लिए मत भूलना -> क्षमताओं -> पृष्ठभूमि मोड -> स्थान अपडेट

import CoreLocation 
    import CoreMotion 


    //turn Off and turn On GPS 
    private func apelacaoRenovarGPSLigado() { 

    LocationManager.sharedInstance.stopUpdatingLocation() 
    let locationManager = LocationManager.sharedInstance 
    locationManager.autoUpdate = true 
    locationManager.startUpdatingLocationWithCompletionHandler { (location, status, verboseMessage, error) ->() in 

    } 
} 

private func startPedometer() 
{ 
    if CMPedometer.isDistanceAvailable() 
    { 
     if self.pedometer == nil 
     { 
      self.pedometer = CMPedometer() 
     } 

     self.pedometer!.startPedometerUpdatesFromDate(NSDate()) { (data, error) in 

      dispatch_async(dispatch_get_main_queue(), { 

       print("DISTANCIA PARCIAL \(data!.distance!)") 

       print("DIFERENCA \(data!.distance!.doubleValue - (self.totalDistance + self.subtotalDistance))") 
       self.delegate!.trackerDistanceDidChanged((data!.distance!.doubleValue - (self.totalDistance + self.subtotalDistance))/1000.0) 
       self.subtotalDistance = data!.distance!.doubleValue 

       self.apelacaoRenovarGPSLigado() 

      }) 

     } 
    } 
    else 
    { 
     self.delegate!.trackerDeviceNotSupported() 
    } 
} 
संबंधित मुद्दे