2

我正在尝试从这里使用 SOLStumbler:Accessing & Using the MobileWiFi.framework to scan for wifi networks。我知道这不受苹果的支持,但它是用于教育目的和实验。我将以下文件添加到我的应用程序中,它编译得很好,但它总是以错误代码退出。(作为“.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);
    }

我的视图控制器代码:

#import "SOLStumbler.h"

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

1 回答 1

2

SOLStumbler您尝试使用的代码很旧。这些东西(例如WiFiManager)在一个私有框架中。这意味着苹果可以而且经常会在操作系统版本之间进行更改或移动。

我假设您现在使用的是 iOS 5?

我登录了我的 iOS 5 手机,确实,

/System/Library/SystemConfiguration/WiFiManager.bundle/

不存在。所以这就是你的代码失败的原因。

看看这个有用的线程。

看起来您现在可以在IPConfiguration框架中找到等效的 (?) 函数。试试这个代码:

libHandle = dlopen("/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfiguration", RTLD_LAZY);

我在越狱的 iOS 5.0.1 手机上运行它并且它工作(加载了 dylib 并找到了一些 Apple80211 功能)。从我链接到的那个线程来看,您可能需要将其安装在越狱手机上的/Applications中,才能充分工作。或者,可能不得不为您的沙盒应用程序添加一些权利

于 2012-07-28T00:32:52.533 回答