La nuova applicazione Nike + GPS per iOS 5 è in grado di elaborare gli eventi dell'accelerometro in background (consentendo il tracciamento di tapis roulant al coperto). Com'è possibile? Quando metto la mia applicazione in background, cessa di ricevere eventi. Io uso l'API UIAccelerometer standard.In che modo Nike + GPS su iPhone riceve gli aggiornamenti dell'accelerometro in background?
33
A
risposta
12
Per il bene di dare una risposta a questa domanda, anche se è già auto risposto ...
"Se si usa il più recente core Movimento API, è possibile ricevere aggiornamenti in background."
Ecco un esempio:
- (void)startAccelerationCollection {
[self.motionManager startAccelerometerUpdatesToQueue:[[NSOperationQueue alloc] init]
withHandler:^(CMAccelerometerData *data, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.accelerometerReadings addObject:data];
});
}];
}
0
Quando il blocco con aggiornamento pedometro, chiamo il metodo di spegnere e accendere il GPS. Per me ha risolto il problema quando l'utente premeva a casa e restava per un'ora ad ascoltare musica su spotify.
Non dimenticare di abilitare Impostazioni progetto -> -> Funzionalità modalità Background -> Aggiornamenti di localizzazione
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()
}
}
Problemi correlati
- 1. FusedLocationApi con PendingIntent per gli aggiornamenti delle posizioni in background. Impossibile ricevere gli aggiornamenti
- 2. In che modo Meteor riceve aggiornamenti sui risultati di una query MongoDB?
- 3. partire CLLocationManager localizzazione aggiornamenti mentre applicazione è in background
- 4. Esegui il listener GPS in background su Android
- 5. iphone - NSTimers in background
- 6. Simulazione degli aggiornamenti di posizione su iPhone Simulator
- 7. Non riceve affatto aggiornamenti in tempo reale da Facebook
- 8. come eseguire la mia applicazione in background in iphone?
- 9. Controllare in modo ricorsivo gli aggiornamenti della directory git
- 10. applicazione pyqt che esegue gli aggiornamenti
- 11. Location Manager rimuovere gli aggiornamenti permesso
- 12. Quanto è accurato il GPS su iPhone 4?
- 13. Come verificare gli aggiornamenti su più tabelle in Oracle?
- 14. Usa node.js per gli aggiornamenti basati su eventi in Django?
- 15. Aggiornamenti dell'acceleratore Coremotion iOS in background/modalità sleep
- 16. In che modo StackOverflow mantiene gli utenti connessi su HTTP?
- 17. Gestire gli aggiornamenti della raccolta in aurelia
- 18. TClientDataSet.ApplyUpdates() non applica gli aggiornamenti
- 19. In che modo la funzionalità Doze/Standby influisce sugli aggiornamenti di posizione?
- 20. Nibire eseguire gli aggiornamenti su select?
- 21. Domanda di servizio per la posizione in background di iPhone 4
- 22. In che modo Dispatcher differisce dal thread in background?
- 23. In che modo JavaScript gestisce le risposte AJAX in background?
- 24. In che modo i siti di social networking calcolano gli aggiornamenti degli amici?
- 25. Come posso fare in modo che l'app di Mac App Store controlli gli aggiornamenti?
- 26. Cacao Controllare gli aggiornamenti
- 27. Come funzionano gli aggiornamenti in tempo reale?
- 28. Fare Github push a un server remoto quando riceve gli aggiornamenti
- 29. SDK Iphone: invia e-mail in background nell'app per iphone
- 30. NSFetchedResultsController che non mostra gli aggiornamenti da altri contesti
prega, chiunque altro può confermare? Sembra fantastico per Apple – AlexeyVMP
Posso confermare che funziona! L'unica cosa che devi soddisfare è utilizzare qualsiasi modalità in background per far funzionare l'app in background (aggiornamenti di posizione, riproduzione, VoIP o centrale BT4). – AlexeyVMP
Ciao ragazzi, grazie per il vostro lavoro finora! Ho provato il tuo approccio per un'app pedometro. Funziona quasi per me. Io uso la modalità di background in background e aggiorno la posizione dell'utente ogni 9 minuti per evitare che l'app diventi inattiva - questo meccanismo funziona ma la coda di aggiornamento non contiene dati dopo i primi 9 minuti. Hai idea di cosa possa andare storto o forse potresti fornire un suggerimento/soluzione un po 'più dettagliato al mio problema? Grazie ancora! Hannes – Hannes