CLLocationManager не работает для не беспроводного соединения? - PullRequest
1 голос
/ 31 марта 2011

У меня есть приложение Mac, и я хотел бы использовать местоположение ядра, однако, когда я не на Wi-Fi, но подключен с помощью кабеля Ethernet, местоположение ядра (CLLocationManager) сообщает, что операция не может быть завершена.

Точное сообщение об ошибке:

The operation couldn't be completed. (kCLErrorDomain error 0.)

Если я всегда подключен к одному и тому же маршрутизатору (т. Е. Wi-Fi или Ethernet-кабель), почему CLLocationManager работает только для Wi-Fi, а не для Ethernetсоединение?

Буду признателен за любые предложения.

Спасибо.

Редактировать:

Вот код.

Я определяюмой диспетчер местоположений в качестве переменной экземпляра, такой как

    locationManager = [[CLLocationManager alloc] init];
    [locationManager setDelegate:self];
    [locationManager setDistanceFilter:ICMinimumUpdateDistance]; 

Затем я отслеживаю метод делегата менеджера местоположений, например, так:

    - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{

// Filter out points before the last update 
NSTimeInterval timeSinceLastUpdate = [newLocation.timestamp timeIntervalSinceDate:dateOfLastUpdate];

if (timeSinceLastUpdate > 0)
{
    //Do stuff
}

}

Я также проверяю ошибки, используя метод делегата

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
    NSLog(@"Location Error:%@", [error localizedDescription]);
}

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

Ответы [ 2 ]

3 голосов
/ 21 июля 2011

Из-за отсутствия GPS на вашем ноутбуке для определения местоположения ядра в OSX используется служба ( skyhook ) или что-то подобное.

Сервис поддерживает базу данных точек доступа WIFI и их местоположения (возможно, обновленных iPhone, которые имеют GPS и Wi-Fi), который запрашивается.

Таким образом, предоставляя список точек доступа, которые вы можете видеть, и их относительные уровни сигналов, система может приблизительно триангулировать, где вы находитесь.

Таким образом, вам нужен и Wi-Fi, и работающая интернет-связь (но интернет не должен быть по Wi-Fi, вы можете оставить аэропорт не связанным)

2 голосов
/ 31 марта 2011

Я тоже это заметил. Если вы откроете вкладку «Часовой пояс» на панели «Дата и время» в «Системных настройках» при подключении к Интернету через Ethernet, появится сообщение о подключении к беспроводной сети, чтобы определить ваше текущее местоположение. Это наводит меня на мысль, что CoreLocation действительно требует беспроводного соединения.

...