Je pense qu'ils ont fait une optimisation (probablement à l'aide de détecteurs de mouvement), pour détecter les "relativement" stationnaire positionnement du téléphone et ils cesser de l'emplacement des mises à jour. Ce n'est qu'une spéculation, mais mes tests montrent:
- À partir de l'emplacement des mises à jour; (testé avec une précision de 10 et de 100 mètres, 3 fois chacun)
- Tournez l'écran de l'appareil hors tension pour mettre l'application en arrière-plan;
- Laisser l'appareil à l'arrêt (par exemple sur un bureau) pendant 30 min.
Les données que j'journal montre la géo-mises à jour arrêter de venir après ~ 15m et 30s. Avec que tout autre traitement en arrière-plan que vous faites est également terminée.
Mon appareil est un iPhone 5 avec iOS 7.
Je suis sûr à 95%, ce n'était pas le cas sur iOS 6/6.1. Où obtenir geo mises à jour avec 100 millions de précision utilisé pour vous donner assez bien continue en cours d'exécution en arrière-plan.
Mise à jour
Si vous redémarrez le directeur des lieux, toutes les 8 minutes, il doit fonctionner en permanence.
Mise à jour #2
Je n'ai pas testé cette dernière, mais c'est ainsi que j'ai repris le travail quand j'ai écrit le post. J'espère que cela est utile.
- (void)tryRestartLocationManager
{
NSTimeInterval now = [[NSDate date] timeIntervalSince1970];
int seconds = round(floor(now - locationManagerStartTimestamp));
if ( seconds > (60 * 8) ) {
[locationManager stopUpdatingLocation];
[locationManager startUpdatingLocation];
locationManagerStartTimestamp = now;
}
}