Nous avons une application totalement dépendante des mises à jour constantes et nous avons constaté que lorsque le téléphone ne reçoit pas de gps, didUpdateToLocation n'est pas appelé même si l'appareil est connecté à un réseau wifi. Pour approfondir ce test, j'ai chargé l'application sur un iPod Touch 4ème génération avec les mêmes résultats.CLLocationManager ne met pas à jour l'emplacement via le Wifi
Pour clarifier, l'application fonctionne parfaitement sur l'iPhone 4 lorsque le GPS est disponible. Nous n'avons pas remarqué le problème jusqu'à ce que le client l'a testé sur son iPhone 4 dans son bureau où il sait qu'il ne reçoit pas de GPS.
Je pensais que le gestionnaire de localisation était supposé supporter le wifi comme une méthode pour déterminer l'emplacement, mais cela ne semble pas être le cas.
Voici mon code:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (locationManager==nil) {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = kCLDistanceFilterNone;
NSLog(@"Accuracy best: %f distance filter none: %f", kCLLocationAccuracyBestForNavigation, kCLLocationAccuracyNearestTenMeters);
}
[locationManager startUpdatingLocation];
...
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{....
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{....
Pour autant que je pensais, il n'y a pas quelque chose de spécial que vous avez à faire pour rendre le travail de LocationManager sur wifi - et maintenant je découvre que cela ne fonctionne pas du tout. BTW- Mon appareil téléphonique est un iPhone 4 fonctionnant sous iOS 5 beta 7 et un ipod touch iOS 4,1.
Avez-vous confirmé que cela fonctionne lorsque vous utilisez votre iPhone 4 avec GPS? –
Oui. Le code fonctionne parfaitement lors de l'exécution sur l'iPhone 4 lorsque le GPS est disponible. –
Intéressant. D'après ce que je peux voir, il n'y a aucune raison que cela ne devrait pas être le cas. Vous pourriez peut-être demander si des services de surveillance de l'emplacement sont disponibles. Peut-être qu'ils ne sont tout simplement pas autorisés sur cet appareil. [CLLocationManager locationServicesEnabled]; Devrait renvoyer une valeur booléenne. –