NSDistributedNotificationCenter和iTunes

时间:2012-04-26 01:02:33

标签: cocoa itunes nsnotifications

有没有办法向iTunes发送通知,因此它会告诉我当前的歌曲。我知道它会在歌曲改变时发送通知但我想在我的应用程序打开时获取当前歌曲。我试图避免使用脚本桥。

2 个答案:

答案 0 :(得分:2)

不幸的是,您不能通过通知执行此操作,您唯一的选择是脚本桥或其他与Apple事件相关的方法。

答案 1 :(得分:1)

您可以使用 NSAppleScript 来运行AppleScript。

示例:获取当前曲目的标题和艺术家

NSAppleScript* theScript = [[NSAppleScript alloc] initWithSource:
                       [NSString stringWithFormat:
                            @"tell application \"iTunes\" to if running then\n"
                            @"    try\n"
                            @"        tell current track to return name & return & artist\n"
                            @"    end try\n"
                            @"    return \"no track\"\n"
                            @"end if\n"
                            @"return \"iTunes is not open\"\n"]];
NSDictionary *errorDict;
NSAppleEventDescriptor *resultDescriptor = [theScript executeAndReturnError:&errorDict];
NSString *title_artist = [resultDescriptor stringValue];
// do something with title_artist

示例:在“资源文件夹”中使用AppleScript文件

NSString *scriptPath = [[NSBundle mainBundle] pathForResource:@"theScriptName" ofType:@"scpt"];
NSAppleScript *theScript = [[NSAppleScript alloc] initWithContentsOfURL: [NSURL fileURLWithPath:scriptPath] error: nil];

另一种解决方案:您可以使用 NSTask 通过osascript运行AppleScript