CLLocationManager не обновляет местоположение через Wi-Fi - PullRequest
1 голос
/ 16 сентября 2011

У нас есть приложение, которое полностью зависит от постоянных обновлений местоположения, и обнаружило, что когда телефон не получает GPS, didUpdateToLocation не вызывается, даже если устройство подключено к сети Wi-Fi.Чтобы продолжить этот тест, я загрузил приложение на iPod Touch 4-го поколения с теми же результатами.

Для пояснения, приложение отлично работает на iPhone 4, когда GPS доступен.Мы не заметили проблему, пока клиент не протестировал его на своем iPhone 4 в своем офисе, где он знает, что не получает GPS.

Я думал, что диспетчер местоположений должен был поддерживать Wi-Fi как метод определенияместоположение, но это, похоже, не так.

Вот мой код:

- (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
{....

Насколько я думал, нет ничего особенного, что вы должны сделатьчтобы заставить locationManager работать через Wi-Fi - и теперь я обнаружил, что он вообще не работает.

Кстати: мое телефонное устройство - iPhone 4 с iOS 5 beta 7 и ipod touch iOS 4.1.

Ответы [ 3 ]

1 голос
/ 16 сентября 2011

Я обнаружил, что didUpdateLocation вызывается ... один раз, когда приложение открывается впервые.Это заставляет меня думать, что когда вы имеете дело только с Wi-Fi, менеджер местоположения находится только в режиме startMonitoringSignificantLocationChanges.

0 голосов
/ 17 сентября 2011

Звучит так, как будто ваша точка доступа Wi-Fi неизвестна.Чтобы убедиться, что это не ошибка кодирования, в симуляторе запустите Safari и посмотрите, найдет ли он ваше местоположение.Если это не так, проблема в неизвестной точке доступа Wi-Fi.Решение состоит в том, чтобы сделать ваш AP известным внешнему миру.Для этого перейдите на http://www.skyhookwireless.com и прочитайте инструкцию.Этот сайт позволяет вам обновлять информацию о вашей точке доступа Wi-Fi в системе XPS.Примечание: прошло шесть недель, прежде чем я был подключен, но теперь это работает.

0 голосов
/ 16 сентября 2011

Попробуйте позвонить:

[self.locationManager startUpdatingLocation];

Возможно, вам также может понадобиться настроить параметры вашего менеджера местоположений в self.locationManager.

...