次のようにCoreWLAN通知(保持されたインターフェイスを使用)に登録すると、次のようになります。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(recieveNetworkNotificationAndRedirectToMainThread:)
name:CWSSIDDidChangeNotification
object:nil];
すべての資格を無効にした場合にのみ通知を受け取ります。デフォルトの資格では、この(または他のCoreWLAN)通知を受信できません。
何か案は?
10.7.4
編集1:
エンタイトルメントリファレンスページは何の支援も提供しませんでした。
編集2:
通知の偽造は正常に機能します。
[[NSNotificationCenter defaultCenter]
postNotificationName:CWSSIDDidChangeNotification
object:self];
また、他のCoreWLAN通知も受信されません。
これは私が見逃している単純な資格であると確信しています...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プレフィックス付きの通知名を使用して10.6用にコンパイルしても、効果はありません。
編集4:
ログからの詳細情報:
AppName(39009)はシステムソケットを拒否します
プロセス:AppName [39009]パス:
/ Users / username / Library / Developer / Xcode / DerivedData / AppName-fnxrpqnodsouovcaxgiocvnfpqor / Build / Products / Release / AppName / Contents / MacOS / AppName Load Address:0x10d23f000 ID:AppName Version:
??? (???)コードタイプ:X86-64(ネイティブ)親プロセス:debugserver [39007]日付/時刻:2012-07-20 13:17:11.851 -0700 OSバージョン:Mac OS X 10.7.4(11E2705)レポートバージョン:7
バックトレース:0libsystem_kernel.dylib0x00007fff98704e76ソケット+101 CoreWLAN 0x00007fff951f4a6f Apple80211EventMonitoringInit2 + 53 2 CoreWLAN
0x00007fff951e6dc4-[CWInterface initWithInterfaceName:] + 1358 3
CoreWLAN
0x00007fff951e412
編集5:
sandboxdでsystem-socketを拒否するためのこの参照が見つかりましたが、まだヘルプはありません。