Je l'ai fait avec une minuterie:
dans l'en-tête ajouter:
ServerInterface *serverInterface;
dans le fichier .m:
- (void)viewDidLoad
{
...
[frequentLocationUpdateTimer invalidate];
frequentLocationUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:30 target:self selector:
@selector(reEnableLocationTick:) userInfo:nil repeats:YES];
...
}
- (void)reEnableLocationTick:(NSTimer *)theTimer
{
[locationGetter startUpdates]; //Maybe you have to change this line according to your code
}
et dans votre LocationManager ...:
- (void)locationManager:(CLLocationManager *)manage didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
...
if (newLocation.horizontalAccuracy < 100)
{
[locationManager stopUpdatingLocation];
}
...
// let our delegate know we're done
[delegate newPhysicalLocation:newLocation];
}
Le code arrête simplement la mise à jour l'emplacement après avoir atteint une précision minimale de 100m. Ensuite, toutes les 30 secondes, une minuterie réactive le gestionnaire de position à nouveau.
Possible duplication de [fréquence de mise à jour de Location Manager, iphone] (http://stackoverflow.com/questions/7385102/location-manager-update-frequency-iphone) –