Список / сканирование доступных WiFis iPhone

Я ищу способ представить доступные Wi-Fi в приложении iPhone. На данный момент мое исследование привело к следующему:

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

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

dlopen: dlopen (/System/Library/SystemConfiguration/Aeropuerto.bundle/Aeropuerto, 1): изображение не найдено не удалось: __Apple80211Associate

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

Используемый исходный код, вызывающий ошибку, находится здесь:

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 и несколько предупреждений

: check_safe_call: не удалось восстановить текущий кадр

предупреждение: Невозможно восстановить ранее выбранный кадр.

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

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

5
задан Jørgen R 13 February 2015 в 11:10
поделиться