У нас есть приложение, которое полностью зависит от постоянных обновлений местоположения, и обнаружило, что когда телефон не получает 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.