m J*_*Jae 5 iphone objective-c wifi network-scan
我正在寻找一种在iPhone App中展示可用WiFis的方法.到目前为止,我的研究结果如下:
甚至提到的改编件:http://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);
Run Code Online (Sandbox Code Playgroud)
即使尝试其中一个注释行,它也不起作用:程序收到了EXC_BAD_ACCESS和几个
警告:check_safe_call:无法恢复当前帧
警告:无法恢复以前选择的帧.
我正在搜索的是如何在我的项目中包含iphone-wireless以及如何修改给定代码的提示?另一种方法是如何在您的环境中扫描WiFis.
如果有人可以提供帮助,那会很好.
小智 5
有关iphone无线的使用示例,您可以查看以下帖子,
http://blog.guvenergokce.com/iphone-wireless-scanner-ios5/
在那里,您还可以找到使用XCode 4.2开发的示例项目.
正如您所提到的,这仅适用于研究或私人项目,我们无法分发.
祝好运,
Guvener
小智 1
路径在 3.X 及更高版本中已更改,从:
/System/Library/SystemConfiguration/Aeropuerto.bundle/Aeropuerto
Run Code Online (Sandbox Code Playgroud)
到:
/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfifuration
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13184 次 |
| 最近记录: |