首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >沙箱coreWLAN?

沙箱coreWLAN?
EN

Stack Overflow用户
提问于 2012-10-29 17:54:31
回答 4查看 1.6K关注 0票数 5

我正在编写一个OS应用程序,它依赖于确定无线信号强度的能力,但我不知道使用什么权限来沙箱它。

无论何时我使用

代码语言:javascript
复制
NSMutableArray *scanResults;
CWInterface *currentInterface = [CWInterface interface];
NSLog(@"currInterface: %@\n", currentInterface);
NSMutableDictionary *signalsDict = [[NSMutableDictionary alloc] init];
    NSError *err = nil;
    scanResults = [NSMutableSet setWithSet:[currentInterface scanForNetworksWithSSID:nil error:&err]];

尽管在XCode中检查了所有权利,我还是得到了错误The operation couldn't be completed. (com.apple.coreWLAN.error error 1.)。我错过了哪些权利?

CoreWLANWirelessManager示例项目也有同样的问题。

EN

回答 4

Stack Overflow用户

发布于 2013-04-25 10:28:40

您可能希望通过使用dlfcn.h库来使用Apple80211私有框架。iphone示例可以在这里找到:

http://www.csse.uwa.edu.au/~chris/iphone/APlogger/

下载源文件并调查扫描仪模块。

总而言之,你会想出这样的东西:

代码语言:javascript
复制
#define IF_NAME "en0"
#include <dlfcn.h>

- (void)performScan
{
    int (*open)(void *);
    int (*bind)(void *, NSString *);
    int (*close)(void *);
    int (*scan)(void *, NSArray **, void *);
    void *libHandle;
    void *airportHandle;

    libHandle = dlopen("/System/Library/Frameworks/Preferences.framework/Preferences", RTLD_LAZY);
    open = dlsym(libHandle, "Apple80211Open");
    bind = dlsym(libHandle, "Apple80211BindToInterface");
    scan = dlsym(libHandle, "Apple80211Scan");
    close = dlsym(libHandle, "Apple80211Close");

    open(&airportHandle);
    bind(airportHandle, @IF_NAME);
    NSArray     *found;
    NSDictionary    *params = [[NSDictionary alloc] init];
    scan(airportHandle, &found, params);

    int nnw = [found count];
    for(int i=0 ; i < nnw ; i++) {
        NSDictionary *nw = [found objectAtIndex:i];
        NSString *ssid = [self fixSSID:nw];
        // RSSI indicates signal strength
        int rssi = [[nw objectForKey:@"RSSI"] intValue];
    }
    // Cleanup
    close(airportHandle);
    dlclose(libHandle);
}

-(NSString *)fixSSID:(NSDictionary *)nw
{
    if ([[nw objectForKey:@"HIDDEN_NETWORK"] boolValue])
    return @"<hidden>";
    else
    return [nw objectForKey:@"SSID_STR"];
}

请注意,如果您在您的iOS应用程序中使用私有框架,您将无法在App Store上发布它们(苹果将拒绝您的应用程序,因为没有Apple80211框架的公共文档)。但是由于您的问题是关于OSX开发的,所以这不适用于您的情况。

希望能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2015-08-28 20:06:18

沙盒应用程序似乎根本不能使用CoreWLAN。

苹果的开发人员文档中写道:“使用app Sandbox,您的应用程序不能修改系统的网络配置(无论是使用系统配置框架、CoreWLAN框架,还是其他类似的API)”,这似乎意味着读取设置而不是写入设置可能是可以的,但这似乎在实践中行不通,Apple DTS:https://forums.developer.apple.com/thread/11307的一篇文章证实了这一点

票数 0
EN

Stack Overflow用户

发布于 2015-11-19 04:21:17

Mac OS X 10.11.1附带的Wifi Diagnostics应用程序的权利如何,该应用程序位于/System/Library/CoreServices/Applications/。检查权限,我看到它拥有以下内容: com.apple.wifi.associate、com.apple.wifi.scan、com.apple.wifi.set_channel、com.apple.wifi.start_autojoin、com.apple.wireless-diagnostics和com.apple.Wireless-诊断.Basic_report。

难道我们只是在沙箱里工作的普通人,不能得到这些吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13119260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档