我正在尋找一種方法在iPhone應用程序中顯示可用的WiFis。 到目前爲止,我的研究導致了以下內容:實施列表/掃描可用的WiFis iPhone
- 應用(ED)這樣的功能,從AppStore的刪除(意味着你不能部署通過AppStore的應用程式是爲我好)
- Apple在隱私框架中隱藏了掃描所必需的功能,並且您無法找到關於「如何使用」的任何解釋/評論/示例。
- http://code.google.com/p/iphone-wireless似乎是最有希望的。無論如何,我不知道如何在我的代碼中包含交付的源代碼,以便它可以在設備上運行
即使所提及的適配器爲htt://code.google.com/p/iphone-無線/問題/細節?ID = 26沒有得到我想要的結果。在設備上啓動應用程序(iPhone 3GS; iOS 3.1.3)後,最大的進展結束於
dlopen error: dlopen(/System/Library/SystemConfiguration/Aeropuerto.bundle/Aeropuerto, 1): image not found failed: __Apple80211Associate
消息。
是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的提示。
如果有人能幫忙,會不錯。
只是試過了:雖然代碼在運行時警告我;它打印出找到的WiFis。必須有比這個越野車更好的方法嗎?會很好,至少正確地打開和關閉訪問WiFi的硬件(這似乎不工作與上述代碼)0o – 2011-01-19 14:52:07