iOS: можно ли вручную связать сеть Wi-Fi с географическим местоположением? - PullRequest
4 голосов
/ 14 июня 2011

Можно ли сделать так, чтобы телефон "знал", что конкретная сеть Wi-Fi находится в определенном географическом местоположении?

if (answer == YES)
{  
    than how?
}
else
{
    can the phone figure this out by himself?  
}

Еще один похожий вопрос: Есть ли способ запустить мониторинг области с точностью ~ 100 м, но сказать CLLocationManager использовать только для сетей Wi-Fi и сотовых антенн? Потому что Я не хочу включать GPS , несмотря ни на что ...

Спасибо!

Ответы [ 2 ]

4 голосов
/ 14 июня 2011

Позиционирование iPhone отстой , и вы ничего не можете сделать.

Если вы делаете джейлбрейк своего устройства, вы можете использовать частную платформу Apple80211 для поиска доступных сетей Wi-Fi и уровня их сигнала. Но это также означает, что ваше приложение будет отклонено.

Если пользователь вручную подключается к Wi-Fi , вы можете видеть MAC-адреса устройств в этой сети и использовать их, чтобы угадать свое местоположение. Поскольку радиус действия Wi-Fi составляет 50 метров, вы получаете такую ​​точность.

Вся система позиционирования прозрачна для разработчика App Store, что означает, что приложение не может отключить GPS, отобразить Wi-Fi или прочитать уровень сигнала. Максимум, что вы можете сделать, это угадать , если вы позиционируете через GPS или Wi-Fi, глядя на параметр высоты.

Вариант использования: вы находитесь в торговом центре и хотите знать, где находится магазин X. Вероятно, нет сигнала GPS, и если вы установите GPS-ретранслятор, вы получите положение антенны этого ретранслятора, а не ваше положение. Даже если вы установите дюжину точек доступа Wi-Fi, вы не сможете попросить пользователя подключиться вручную, потому что это будет хлопотно, и даже если он сделает это, он получит точность 50-100 метров, и тогда существует риск безопасности подключения здесь. и там. В основном вы облажались.

0 голосов
/ 06 февраля 2012

Я полностью согласен с Яно: логика яблока имеет больше смысла, чем другие решения. В любом случае Вы можете легко получить идентификатор своей сети WIFI:

-(void)LogInfo:(NSDictionary*)info forKey:(NSString*)key;
{
    NSString* temp;
    temp = [info objectForKey: key];
    NSLog(temp);
}


- (void)fetchSSIDInfo
{
    NSArray *ifs = (id)CNCopySupportedInterfaces();
    NSDictionary* info = nil;
    for (NSString *ifnam in ifs)
    {
        info = (id)CNCopyCurrentNetworkInfo((CFStringRef)ifnam);
        NSString *temp = [NSString stringWithFormat:@"%@", [info description]];
        [self AddToLog: temp];

        [self LogInfo:info forKey:@"BSSID"];
        [self LogInfo:info forKey:@"SSID"];
        [self LogInfo:info forKey:@"SSIDDATA"];
        [info release];
    }

    [ifs release];

}
...