Ich habe dieses Thema gründlich untersucht, bevor Sie die Frage stellen, aber müssen sicherstellen, dass ich zu den richtigen Schlussfolgerungen gekommen bin, und wenn ja, würde ich gerne Hilfe bei der Umsetzung dieses so effizient wie möglich .Kontinuierliche Beschleunigungsmesser Updates im Hintergrund auf iOS
Es ist essentiell für meine App erhalten Beschleunigungsmesser Updates alle 5 Sekunden oder so und kann in bestimmten Situationen schneller sein; Ohne diese Funktion ist es keine sehr nützliche App.
Also, wie man das erreicht? Die grundlegende Strategie ist es, die Methode zu verwenden:
[cmMotionManager startDeviceMotionUpdatesToQueue:...]
mit einem geeigneten deviceMotionUpdateInterval
und dann ‚stellen Sie sicher,‘ irgendwie Ihre Anwendung nie dh ausgesetzt wird. Sie müssen einen der Hintergrundmodi implementieren (z. B. Standort, Hintergrundaudio, VOIP usw.)
Dies ist die Strategie, die von vielen Anwendungen bereits im App Store wie Sleep Cycle ("Tonaufnahme"), Nike + und Pacer verwendet wird (Tonwiedergabe).
(korrigiert mich wenn es eine andere Art und Weise kontinuierlich Beschleunigungsmesser Informationen zu erhalten)
Mein Problem ist, dass meine App wird kein Ton aufzeichnenden, braucht nicht VOIP etc und erfordert keine der neuen Hintergrund Fetch/Remote-Benachrichtigungs-API in iOS 7. Wie also gehe ich sicher, dass ich im Hintergrund aktiv bleibe?
Nun, da ich eine App, die Bewegung misst, im Entwerfen ist, ist es keine weite Strecke, um Standortinformationen zu erhalten. Meine Frage ist, wie man Standort-Updates so effizient wie möglich implementiert, da ich diese Standortaktualisierungen überhaupt nicht brauche und gleichzeitig sicherstelle, dass meine App niemals ausgesetzt wird?
Dies ist, was ich im Moment in meinem AppDelegate haben:
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
- (void)applicationWillResignActive:(UIApplication *)application
{
[self.locationManager startUpdatingLocation];
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[self.locationManager stopUpdatingLocation];
}
habe ich bemerkt, dass manchmal für eine kurze Zeit nach der Zeit, die ich die Home-Taste auf meiner app drücken, wird meine app suspendiert - vermutlich, da Core Location versucht, einen Location-Fix zur Auslieferung an die App zu erhalten.
Ich würde auch gerne wissen, wie lange, wenn Sie durch ein Standort-Update geweckt wurden, bevor das System Sie erneut aussetzt, wenn ein neues Standort-Update nicht eintrifft? Muss ich fortlaufende Standortaktualisierungen (Navigationsstil) versuchen und erhalten, um sicherzustellen, dass ich nie suspendiert werde?
Bitte helfen!
Dank
möglich Duplikat von [iPhone sammeln CoreMotion Daten im Hintergrund. (länger als 10 Minuten)] (http://stackoverflow.com/questions/20766139/iphone-collecting-coremotion-data-in-the-background-longer-than-10-mins) –
hast du deine Antwort gefunden? – ChuckKelly