在歌曲信息更改时使用NSDistributedNotificationCenter for iTunes获取通知

时间:2011-05-01 01:54:02

标签: objective-c cocoa notifications itunes

我知道每次玩家更改歌曲/停止/播放等时,您都可以使用[iTunesDNC addObserver:self selector:@selector(updateInfo:) name:@"com.apple.iTunes.playerInfo" object:nil];来获取通知。但我需要的是每次在iTunes上更改信息时的通知(例如歌曲标题已更改,歌词更改,艺术家等)

有什么建议吗?我很确定我只需要将 com.apple.iTunes.playerInfo 更改为其他不是 playerInfo 的内容。

我知道它应该是可行的,因为如果您在iTunes上编辑歌曲的ID3标签或添加歌词,有一个名为SongGenie的应用会更改其信息。

谢谢!

2 个答案:

答案 0 :(得分:12)

是的,有办法。每次更改歌曲信息时,iTunes都会发布“ com.apple.iTunes.sourceSaved ”通知,其userInfo字典是用户的库。

您可以通过收听发布到分布式通知中心的每个通知来查看iTunes发送的此通知和其他通知。

 [[NSDistributedNotificationCenter defaultCenter] addObserver:self
                                                  selector:@selector(allDistributedNotifications:)
                                                  name:nil
                                                  object:nil];

- (void) allDistributedNotifications:(NSNotification *)note 
{
    NSString *object = [note object];
    NSString *name = [note name];
    NSDictionary *userInfo = [note userInfo];
    NSLog(@"<%p>%s: object: %@ name: %@ userInfo: %@", self, __PRETTY_FUNCTION__, object, name, userInfo);
}

答案 1 :(得分:0)