2012-07-25 72 views
2

我试图从这里使用SOLStumbler:Accessing & Using the MobileWiFi.framework来扫描wifi网络。我知道这不是由苹果支持,但它是用于教育目的和实验。我将下列文件添加到我的应用程序中,它编译得很好,但它总是以一个错误代码退出。 (作为“.m”文件的一部分。)有谁知道如何使这个工作?iPhone Wifi扫描Stumbler

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); 
    } 

我的视图控制器代码:

#import "SOLStumbler.h" 

-(void)viewDidLoad{ 
    SOLStumbler *networksManager = [[SOLStumbler alloc] init];  
    [networksManager scanNetworks]; 
    NSLog(@"%@", [networksManager description]); 
    [networksManager release]; 
} 
+1

**其中**错误代码?请不要告诉我们这是行不通的。告诉我们什么不起作用,以及你看到了什么症状。你在调试器中运行了吗?你看见什么了?你的'NSLog'语句是什么打印出来的? – Nate 2012-07-26 00:27:03

+0

我添加了更多关于错误陈述的信息。它作为SOLStumbler.m文件的代码 – MrHappyAsthma 2012-07-26 17:58:43

+0

的一部分输出单个字母是否适用于越狱手机? – Nate 2012-07-28 00:34:42

回答

2

你试图使用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,才能完全正常工作。或者,可能不得不乱用增加一些权利到您的沙盒应用程序。

+0

谢谢你。我只需要为我的操作系统版本找到相应的框架!谢谢! :D – MrHappyAsthma 2012-07-28 06:38:23

+0

libHandle = dlopen(“/ System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfiguration”,RTLD_LAZY);
不适用于iPhone 5S OS 7.1 – vualoaithu 2014-04-17 01:49:24