我正在尝试从此处使用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];
}
最佳答案
您尝试使用的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中安装此程序,才能正常工作。或者,可能不得不在沙盒应用程序中添加一些权利。
关于iphone - iPhone Wifi扫描机,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11660169/