我正在尝试从这里使用SOLStumbler:Accessing & Using the MobileWiFi.framework来扫描wifi网络。我知道这不是苹果支持的,但它用于教育目的和实验。我将以下文件添加到我的应用程序,它编译得很好,但它总是退出时出现错误代码。 (作为“.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];
}
答案 0 :(得分:2)
您尝试使用的SOLStumbler
代码已经过时了。这些内容(例如 WiFiManager )位于私有框架中。这意味着,如果从操作系统版本到版本,Apple可以而且经常会改变它或移动。
我假设你现在正在使用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 中安装它,以便完全运行。或者,可能不得不将一些权利添加到您的沙盒应用程序中。