La nueva aplicación Nike + GPS para iOS 5 es capaz de procesar eventos de acelerómetro en el fondo (lo que permite el seguimiento en cinta de correr interior). ¿Cómo es esto posible? Cuando pongo mi aplicación en segundo plano, deja de recibir eventos. Uso la API UIAccelerometer estándar.¿Cómo Nike + GPS en iPhone recibe actualizaciones de acelerómetro en segundo plano?
33
A
Respuesta
12
En aras de dar una respuesta a esta pregunta, a pesar de que ya se auto responder es ...
"Si utiliza la nueva API Core movimiento, puede recibir actualizaciones en el fondo."
Aquí se muestra un ejemplo:
- (void)startAccelerationCollection {
[self.motionManager startAccelerometerUpdatesToQueue:[[NSOperationQueue alloc] init]
withHandler:^(CMAccelerometerData *data, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.accelerometerReadings addObject:data];
});
}];
}
0
Cuando el bloque con la actualización del contador de pasos, que llame al método para apagar y encender el GPS. Para mí, solucionó el problema cuando el usuario pulsaba la tecla de inicio y se quedaba una hora escuchando música en Spotify.
No se olvide de activar Configuración del proyecto -> -> Capacidades modos Antecedentes -> actualizaciones de ubicación
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()
}
}
Cuestiones relacionadas
- 1. ¿Es posible ejecutar el acelerómetro del iPhone en segundo plano?
- 2. cómo ejecutar mi aplicación en segundo plano en iphone?
- 3. Ejecutar escucha de GPS en segundo plano en Android
- 4. Solicitando la ubicación del iPhone mientras está en segundo plano?
- 5. iOS procesado en segundo plano
- 6. iPhone OS 4 Multitarea - Reproducción de audio En segundo plano
- 7. iPhone GPS - No recibo actualizaciones de ubicación válidas
- 8. Llamadas de red en segundo plano: iOS
- 9. Depurando tareas en segundo plano
- 10. Cómo programar una tarea en segundo plano
- 11. El servicio en segundo plano necesita enviar la ubicación del GPS en el servidor
- 12. GPS V.S. acelerómetro para calcular la distancia
- 13. Actualizaciones de ubicación cuando la aplicación está en segundo plano o suspendida
- 14. Iphone SDK: Enviar correo electrónico en segundo plano en la aplicación iphone
- 15. ¿Cómo mantener la conexión de socket VOIP en segundo plano?
- 16. ¿Cómo puedo ejecutar sockets UDP en segundo plano en una aplicación de iPhone?
- 17. Ejecutar tarea en segundo plano en JavaFX
- 18. Trabajo en segundo plano en Powershell
- 19. Calibración del acelerómetro iPhone
- 20. Implementaciones de InputStream en segundo plano almacenadas
- 21. Procesos en segundo plano de PHP
- 22. Solicitud HTTP de iOS en segundo plano
- 23. ¿Cómo mostrar notificaciones desde el servicio en segundo plano?
- 24. Programa Java ejecutándose en segundo plano
- 25. Aplicación que se ejecuta en segundo plano
- 26. ¿Cómo implementar el proceso Daemon para tareas en segundo plano en iphone sdk 3.0?
- 27. Simulación de actualizaciones de ubicación en el simulador de iPhone
- 28. cómo funciona la aplicación de iPhone de DataMan en segundo plano
- 29. Obtener el plano del dispositivo en relación con el plano de tierra con el acelerómetro
- 30. iPhone: cómo configurar la insignia de la aplicación, cuando la aplicación está cerrada/en segundo plano?
Por favor, nadie más lo puede confirmar? Parece fantástico para Apple – AlexeyVMP
¡Puedo confirmar que funciona! Lo único que debe cumplir: use cualquier modo de fondo para que su aplicación se ejecute en segundo plano (actualizaciones de ubicación, reproducción, VoIP o BT4 central). – AlexeyVMP
Hola chicos, ¡gracias por su trabajo hasta ahora! Probé tu enfoque para una aplicación de podómetro. Casi funciona para mí. Utilizo el modo de fondo de la ubicación y actualizo la ubicación del usuario cada 9 minutos para evitar que la aplicación quede inactiva: este mecanismo funciona pero la cola de actualización no contiene ningún dato después de los primeros 9 minutos. ¿Tiene alguna idea de lo que sale mal o tal vez podría proporcionar una pista/solución más detallada para mi problema? ¡Gracias de nuevo! Hannes – Hannes