macOS系统中'MessageReceived'音效的ID查询求助
解决macOS调用ReceivedMessage系统音效的问题
核心原因
ReceivedMessage 并非AudioServicesPlaySystemSound()可直接调用的公开系统音效ID,它属于「信息」应用的私有音效,不在默认系统音效目录与公开ID列表中。
可行方案
方案1:直接读取「信息」应用私有音效
无需打包音效文件,通过应用Bundle路径直接调用原生音效:
import AppKit if let soundPath = NSWorkspace.shared.urlForApplication(withBundleIdentifier: "com.apple.Messages")?.appendingPathComponent("Contents/Resources/ReceivedMessage.caf") { let sound = NSSound(contentsOf: soundPath, byReference: true) sound?.play() }
方案2:使用公开系统音效ID替代
如果无需严格匹配ReceivedMessage的声音,可选用公开的消息类音效ID:
1000:邮件接收音效1005:通用提示音
调用代码:
import AudioToolbox AudioServicesPlaySystemSound(1000)
方案3:注册自定义音效ID(需打包文件,不推荐)
若一定要使用ReceivedMessage的音频,可将对应caf文件加入项目后注册临时ID:
import AudioToolbox var soundID: SystemSoundID = 0 if let soundURL = Bundle.main.url(forResource: "ReceivedMessage", withExtension: "caf") { AudioServicesCreateSystemSoundID(soundURL as CFURL, &soundID) AudioServicesPlaySystemSound(soundID) }
内容的提问来源于stack exchange,提问作者cyril
相关产品推荐
相关产品推荐

