我正在尝试使用这里的SOLStumbler:Accessing & Using the MobileWiFi.framework来扫描wifi网络。我知道苹果并不支持这种做法,但这是出于教育目的和实验目的。我将以下文件添加到我的应用程序中,它可以很好地编译,但它总是带着一个错误代码退出。(作为".m“文件的一部分。)有谁知道怎么让它工作吗?
SOLStumbler.h:
SOLStumbler.m:
SOLStumbler.m的这一部分总是输出一个字母错误。通常是e,但有时是u。
libHandle = dlopen("/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager", RTLD_LAZY);
char *error;
if (libHandle == NULL && (error = dlerror()) != NULL) {
NSLog(@"%c",error);
exit(1);
}我的ViewController代码:
#import "SOLStumbler.h"
-(void)viewDidLoad{
SOLStumbler *networksManager = [[SOLStumbler alloc] init];
[networksManager scanNetworks];
NSLog(@"%@", [networksManager description]);
[networksManager release];
}发布于 2012-07-28 08:32:53
您尝试使用的SOLStumbler代码非常旧。这些东西(例如、WiFiManager、)是在私有框架中。这意味着苹果可以,而且经常会改变它,或者在操作系统版本之间移动。
我想你现在用的是iOS 5吧?
我登录了我的iOS 5手机,实际上,
/System/Library/SystemConfiguration/WiFiManager.bundle/不存在。这就是你的代码失败的原因。
Have a look at this useful thread.
看起来您现在可以找到等效的(?)IPConfiguration框架中的函数。尝试以下代码:
libHandle = dlopen("/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfiguration", RTLD_LAZY);我在一部越狱的iOS 5.0.1手机上运行了它,它工作了(加载了dylib并找到了一些Apple80211函数)。从我链接的那个帖子来看,看起来你可能需要在越狱手机上的/Applications中安装这个程序,以便完全工作。或者,可能需要在沙盒应用程序中添加一些权限。
https://stackoverflow.com/questions/11660169
复制相似问题