如何使用Cocoa在OSX中触发声音警报?

App*_*rew 5 cocoa osx-lion

当Finder完成文件复制时,它会触发声音警报.我怎么能从我的应用程序那样做?

请注意,它与简单播放声音不同.我来自Windows背景,因此我假设OSX允许用户从某个中心位置配置通知声音.因此,如果用户为事件选择不同的声音,那么该API应该播放该新声音.通过这种方式,我可以将应用程序凝胶化到系统中,并且可以使用用户熟悉的声音提醒用户.

App*_*rew 6

回答我自己的问题.

更新

补充说明

系统警报是用户可以配置的警报,其他人如清空回收站,复制文件时发出的声音不是.

NSBeep是触发警报声音的最简单方法,通知用户错误.其他声音可在Lion的以下位置获得.

  • /System/Library/Components/CoreAudio.component/Contents/SharedSupport/SystemSounds
  • 对于其他用户界面声音,请检查Resources核心应用程序的相关包下的文件夹.这些应用程序包可以在中找到/System/Library/CoreServices/.

因此,例如,如果您想要播放回收bin声音,请使用以下代码.

NSSound *systemSound = [[NSSound alloc] initWithContentsOfFile:@"/System/Library/Components/CoreAudio.component/Contents/SharedSupport/SystemSounds/dock/drag to trash.aif" byReference:YES];
if (systemSound) {
    [systemSound play];
}
Run Code Online (Sandbox Code Playgroud)

注意事项

声音文件的名称和路径可能随时更改.事实上SystemSounds狮子之前的位置/System/Library/Components/CoreAudio.component/Contents/Resources/SystemSounds.