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

时间:2012-02-06 09:15:22

标签: cocoa osx-lion

当Finder完成文件复制时,它会触发声音警报。我怎么能从我的应用程序中做到这一点?

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

3 个答案:

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

注意事项

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

答案 1 :(得分:4)

答案 2 :(得分:2)

NSSound(named: "Funk")?.play()