2011-02-03 16 views
4

私は少し助けが必要です、私は現在方法があります。 iTunesで現在再生中のトラックのアーティスト名、トラック名、および再生時間を取得するMac OS XアプリケーションのupdateTrackInfoObjective-C Mac OS X分散通知iTunes

しかし、私はアプリが配布されたiTunes通知を聴きたいと思っています。 com.apple.iTunes.playerInfo次に、通知がiTunesによって配信されるときにupdateTrackInfoメソッドを呼び出します。私がヘッダーファイルと実装ファイルの両方に書き込む必要があるものについて、誰かが助けてくれますか?

ありがとう、サミ。

答えて

13

あなたは-[NSDistributedNotificationCenter addObserver:selector:name:object:]を探している:他の場所で同じクラスの

NSDistributedNotificationCenter *dnc = [NSDistributedNotificationCenter defaultCenter]; 
[dnc addObserver:self selector:@selector(updateTrackInfo:) name:@"com.apple.iTunes.playerInfo" object:nil]; 

...それも、あなたに通知内のトラック情報の全体の束を与える

- (void) updateTrackInfo:(NSNotification *)notification { 
    NSDictionary *information = [notification userInfo]; 
    NSLog(@"track information: %@", information); 
} 

を。それいいじゃない?

- (id) init { 
self = [super init]; 
if (!self) return nil; 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(receiveNotification:) 
              name:@"com.apple.iTunes.playerInfo" 
              object:nil]; 
return self;} 

- (void) receiveNotification:(NSNotification *) notification { 
if ([@"com.apple.iTunes.playerInfo" isEqualToString:@"com.apple.iTunes.playerInfo"]) { 
    NSLog (@"Successfully received the test notification!"); 
}} 

をしかし、それはNSNotificationCenterの代わりNSDistributedNotificationCenterを使用:あなたの助けのための

+0

これはほとんどの時間にはうまくいきますが、現在の曲が停止しているときには通知されません。つまり、現在の曲は_no_です。 – seaturtle

3

おかげで、あなたは私が私のコードを修正する助け、私はこれまで書かれていました。私は間違っているところです。

ありがとう、サミ。

+1

うん、それはやるよ。補足として、 '-receiveNotification:'メソッドの 'if()'ステートメントは常に真です... –