2011-01-19 4 views
5

Я ищу способ представить доступный WiFis в приложении для iPhone. До сих пор мое исследование привело к следующему:Список/Сканирование доступных WiFis iPhone

  • приложения, которые реализуют (Ed) такая функциональность была удалена из AppStore (означает, что вы не можете развернуть приложение через AppStore, который отлично подходит для меня)
  • Apple скрывает функциональность, необходимую для сканирования в частной структуре, и вы не можете найти никаких объяснений/комментариев/примеров на «как использовать»
  • http://code.google.com/p/iphone-wireless представляется наиболее перспективным. во всяком случае, я не могу понять, как включить поставляемые источники в мой код, чтобы он работал на устройстве

Даже упоминаемые адаптеры htt: //code.google.com/p/iphone- wireless/issues/detail? id = 26 не получил желаемых результатов. Наибольший прогресс был в конечном итоге с сообщением

dlopen error: dlopen(/System/Library/SystemConfiguration/Aeropuerto.bundle/Aeropuerto, 1): image not found failed: __Apple80211Associate

после запуска приложения на устройстве (iPhone 3GS, IOS 3.1.3).

Б исходный код, который procudes ошибку здесь:

NSMutableDictionary *networks; 
bool scanning; 
void *libHandle; 
void *airportHandle; 
int (*open)(void *); 
int (*bind)(void *, NSString *); 
int (*close)(void *); 
int (*scan)(void *, NSArray **, void *); 

networks = [[NSMutableDictionary alloc] init]; 
// libHandle = dlopen("/System/Library/Frameworks/Preferences.framework/Preferences", RTLD_LAZY); 
// libHandle = dlopen("/System/Library/PrivateFrameworks/Apple80211.framework/Preferences", RTLD_LAZY); 
libHandle = dlopen("/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager", RTLD_LAZY); 

open = dlsym(libHandle, "Apple80211Open"); 
bind = dlsym(libHandle, "Apple80211BindToInterface"); 
close = dlsym(libHandle, "Apple80211Close"); 
scan = dlsym(libHandle, "Apple80211Scan"); 

open(&airportHandle); 
bind(airportHandle, @"en0"); 

NSLog(@"Scanning..."); 
scanning = true; 
NSArray *scan_networks; 
NSDictionary *parameters = [[NSDictionary alloc] init]; 
scan(airportHandle, &scan_networks, parameters); 
bool changed; 
for (int i = 0; i < [scan_networks count]; i++) { 
    if([networks objectForKey:[[scan_networks objectAtIndex: i] objectForKey:@"BSSID"]] != nil 
     && ![[networks objectForKey:[[scan_networks objectAtIndex: i] objectForKey:@"BSSID"]] isEqualToDictionary:[scan_networks objectAtIndex: i]]) 
     changed = true; 
    [networks setObject:[scan_networks objectAtIndex: i] forKey:[[scan_networks objectAtIndex: i] objectForKey:@"BSSID"]]; 
} 
if(changed) { 
    NSLog(@"NetworksUpdated"); 
} 
scanning = false; 
NSLog(@"Scan Finished..."); 
NSLog(@"Found %i networks: %@", [networks count], networks); 

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

warning: check_safe_call: could not restore current frame

warning: Unable to restore previously selected frame.

Что я ищу - это подсказки, как включить iphone-wireless в мой проект и как изменить данный код? Альтернативой будет вопрос о том, как сканировать WiFis в вашей среде.

Было бы неплохо, если бы кто-то мог помочь.

+0

только что пробовал: хотя код предупреждает меня во время выполнения; он распечатывает найденный WiFis. Должен быть лучший подход, чем этот багги? Было бы неплохо хотя бы правильно открыть и закрыть доступ к Wi-Fi-аппарату (который, похоже, не работает с указанным выше кодом) 0o –

ответ

5

Для образца использования в iPhone беспроводной, вы можете проверить следующий пост,

http://blog.guvenergokce.com/iphone-wireless-scanner-ios5/

Там вы также найдете типовой проект, разработанный с XCode 4.2.

Как вы уже упоминали, это только для исследовательских или частных проектов, которые мы не можем распространять.

Успехов,

Guvener

+0

У вас есть это в другом месте?Похоже, что приведенная выше ссылка не работает. – Razgriz

1

путь изменился в 3.X и за его пределами, от:

/System/Library/SystemConfiguration/Aeropuerto.bundle/Aeropuerto 

к:

/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfifuration 
1

Проверить this вне. Для этого я создал репозиторий в GitHub.

+0

Он работает на iphone6 ​​+ на iOS8. –

+0

Можно ли прочитать RSSI каждой сети? –

+0

это только сканирование устройств, подключенных к той же сети, а не доступных точек Wi-Fi/доступа. – Razgriz

 Смежные вопросы

  • Нет связанных вопросов^_^