2012-05-10 12 views
4

私のクラスが初期化されると、さまざまなWi-Fi通知のためのオブザーバーとして自分自身を追加します。なんらかの理由で、セレクタが実行されていない状態です。何か案は?早めにありがとうございます。 UPDATENSNotificationのトラブル

-(id) init 
{ 
    if (self) 
    { 
     sself = self; 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWModeDidChangeNotification object:nil]; 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWSSIDDidChangeNotification object:nil]; 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWBSSIDDidChangeNotification object:nil]; 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWCountryCodeDidChangeNotification object:nil]; 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWLinkDidChangeNotification object:nil]; 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWPowerDidChangeNotification object:nil]; 

:私は私のプロジェクトにCoreWLANフレームワークが含まれている

-(void) handleNotification:(NSNotification*) notification 
{ 
    NSLog(@"Notification Received"); 
} 

:ここ は、handleNotificationメソッドである enter image description here

私はCoreWLANWirelessManager.appをダウンロードしたが、これはあります私が参考にしているもの奇妙なことに、Appleのコードは廃止予定の通知を使用していますが、それでも機能します。私は新しいAPIと非難されたAPIを使ってみましたが、成功しませんでした。ここにコードを掲載できるかどうかはわかりませんが、文字通り違いはありません。セレクタの名前も同じです。

お気軽にお問い合わせください。

UPDATE(ダスティンの回答):問題を特定するために新しいプロジェクトを作成しました。あなたが説明したのと同じように私の.hと.mファイルを設定しました。残念ながら、私はまだ通知を受けていません。私が横たわっていない(または狂っていない)ことを示すために、同じランタイム中に撮影された2つのスクリーンショット(かなり混雑している)を含めました。 (1.私はhandleNotification:メソッドにブレークポイントを持っています。アプリケーションは一度もポーズしません。 。何もネットワーク1

をNSLogedされていない: enter image description here

ネットワーク2: enter image description here

UPDATE 2012年5月17日:ダスティンの答えは正しかったが、無線LANインタフェース名はどのようなハードウェアによって異なりますアプリが実行されているつづいている。私の場合(MacBook Air、イーサネットなし)、私のWi-Fiはen1ではなくen0です。私は、私のお母さんのiMacからシステム構成plstファイルを取得し、Wi-Fiはen1と呼ばれています。イーサネットはen0です。皆さんのお手伝いをありがとうございます。

+0

です? MacOS 10.5,10.6または10.7? –

+0

OS X 10.7 –

+0

を使用していて、プロジェクトのフレームワークのリストにCoreWLAN.frameworkを含めていますか? –

答えて

3

これらの通知を受け取るには、CWInterfaceのインスタンスを保持する必要があります。あなたの.hは、その後、あなたの.mファイルにお知らせCWInterfaceプロパティ

このような
#import "AppDelegate.h" 
#import <CoreWLAN/CoreWLAN.h> 

@implementation AppDelegate 

@synthesize window = _window; 
@synthesize wirelessInterface; 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    // Insert code here to initialize your application 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWModeDidChangeNotification object:nil]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWSSIDDidChangeNotification object:nil]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWBSSIDDidChangeNotification object:nil]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWCountryCodeDidChangeNotification object:nil]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWLinkDidChangeNotification object:nil]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWPowerDidChangeNotification object:nil]; 

    self.wirelessInterface = [CWInterface interfaceWithName:@"en1"]; 
} 


-(void) handleNotification:(NSNotification*) notification 
{ 
    NSLog(@"Notification Received"); 
} 

@end 

を見てしまう。このよう

#import <Cocoa/Cocoa.h> 
@class CWInterface; 

@interface AppDelegate : NSObject <NSApplicationDelegate> 

@property (assign) IBOutlet NSWindow *window; 
@property (retain) CWInterface *wirelessInterface; 

@end 

を見てしまうことは、MacOSののバージョンあなたがターゲットとしている重要なビット

+0

ありがとうございます。残念ながら、これはうまくいきませんでした。私はその投稿を更新しました。しかし、私は答えを感謝します。 –

+0

アプリの実行中にWiFiインターフェースをオン/オフに切り替えると、通知が届きますか? – Dustin

+0

いいえ、何も通知はありません。 –