2011-09-15 4 views
1

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.

+0

Avez-vous confirmé que cela fonctionne lorsque vous utilisez votre iPhone 4 avec GPS? –

+0

Oui. Le code fonctionne parfaitement lors de l'exécution sur l'iPhone 4 lorsque le GPS est disponible. –

+0

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. –

Répondre

1

J'ai découvert que didUpdateLocation est appelée ... une fois, lorsque l'application s'ouvre pour la première fois. Cela me fait penser que lorsque vous traitez avec le wifi seulement, le gestionnaire d'emplacement est en mode startMonitoringSignificantLocationChanges uniquement.

0

Essayez d'appeler:

[self.locationManager startUpdatingLocation]; 

possible, vous devrez peut-être configurer vos paramètres de gestion de l'emplacement sur self.locationManager aussi bien.

0

Il semble que votre point d'accès Wi-Fi soit inconnu. Pour vous assurer qu'il ne s'agit pas d'une erreur de codage, démarrez Safari dans le simulateur et vérifiez s'il trouve votre emplacement. Si ce n'est pas le cas, le problème est votre point d'accès Wi-Fi inconnu. La solution est de faire connaître votre AP à l'extérieur. Pour ce faire, passez au http://www.skyhookwireless.com et lisez les instructions. Ce site vous permet de mettre à jour les informations de votre point d'accès Wi-Fi dans le système XPS. Note: il a fallu six semaines avant que je sois connecté, mais ça marche maintenant.