当我注册CoreWLAN通知(使用保留的界面)时,如下所示:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(recieveNetworkNotificationAndRedirectToMainThread:)
name:CWSSIDDidChangeNotification
object:nil];
仅当我拥有所有权利 已禁用 时,才会收到通知。没有任何默认权利允许我接收此(或其他CoreWLAN)通知。
有什么想法吗?
10.7.4
修改1:
Entitlements Reference page没有提供任何帮助。
编辑2:
伪造通知正常:
[[NSNotificationCenter defaultCenter]
postNotificationName:CWSSIDDidChangeNotification
object:self];
也没有收到任何other CoreWLAN notifications。
我确信这是一个我遗漏的简单权利......以下是具有Growl临时异常的权利文件(删除临时异常也没有效果):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.device.usb</key>
<true/>
<key>com.apple.security.files.user-selected.read-only</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
<key>com.apple.security.temporary-exception.apple-events</key>
<string>com.Growl.GrowlHelperApp</string>
<key>com.apple.security.temporary-exception.mach-lookup.global-name</key>
<string>GrowlApplicationBridgePathway</string>
</dict>
</plist>
编辑3:
使用旧的k-prefixed通知名称编译10.6也没有效果。
编辑4:
日志中的更多信息:
AppName(39009)拒绝系统套接字
处理:AppName [39009]路径:
/用户/用户名/库/开发商/ Xcode中/ DerivedData / AppName的-fnxrpqnodsouovcaxgiocvnfpqor /编译/产品/发行/ AppName的/内容/ MacOS的/ AppName的 加载地址:0x10d23f000标识符:AppName版本:
??? (???)代码类型:X86-64(Native)父进程: debugserver [39007]日期/时间:2012-07-20 13:17:11.851 -0700操作系统版本:Mac OS X 10.7.4(11E2705)报告版本:7
Backtrace:0 libsystem_kernel.dylib 0x00007fff98704e76 socket + 10 1 CoreWLAN 0x00007fff951f4a6f Apple80211EventMonitoringInit2 + 53 2 CoreWLAN
0x00007fff951e6dc4 - [CWInterface initWithInterfaceName:] + 1358 3
CoreWLAN 0x00007fff951e412d + [CWInterface interfaceWithName:] + 52 4 CoreWLAN
0x00007fff951e41a8 + [CWInterface interface] + 98
编辑5:
答案 0 :(得分:0)
我可以使用hardwaregrowler中的网络通知器代码使用我的应用程序沙盒获取SSID更改和更新 - 我认为因为它正在寻找特定的通知。
http://code.google.com/p/growl/source/browse/Extras/HardwareGrowler/?name=default
收到更改通知后:
if(wif==nil){
wif = [CWInterface interface];
[wif retain];
}
if(!wif.serviceActive){
skip=TRUE;
}
if(wif.ssid==nil){
skip=TRUE;
}
if(!skip)
if(wif){
NSLog(@"We are on the WiFi network: %@",wif.ssid);
}