2

次のように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を拒否するためのこの参照が見つかりましたが、まだヘルプはありません。

4

1 に答える 1

0

ハードウェアグロウラーのnetworknotifierコードを使用してサンドボックス化されたアプリで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);
}
于 2012-07-26T00:48:30.673 に答える