Objective-C Mac OS X分布式通知iTunes

时间:2011-02-03 16:34:32

标签: objective-c xcode notifications itunes scripting-bridge

我需要一点帮助,我现在有一个方法;我的Mac OS X应用程序中的updateTrackInfo获取当前在iTunes中播放的艺术家名称,曲目名称和曲目的持续时间

但是我想让应用程序监听分发的iTunes通知; com.apple.iTunes.playerInfo 然后在iTunes分发通知时调用方法updateTrackInfo。请有人帮助我,我需要在标题和实现文件中写下什么。

谢谢,萨米。

2 个答案:

答案 0 :(得分: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);
}

它甚至会在通知中为您提供一大堆跟踪信息。不是很好吗?

答案 1 :(得分:3)

感谢您的帮助,您帮我纠正了我的代码,我写了这篇文章:

- (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。哪个是我出错的地方。

谢谢,萨米。