使用 Swift 在 OS X 10.11 中设置 OS X 音量,而不使用已弃用的 AudioHardwareServiceSetPropertyData API

Set OS X volume in OS X 10.11 using Swift without using the deprecated AudioHardwareServiceSetPropertyData API

我发现 this code 使用 Swift 设置系统音量。在操场上使用代码时,我收到了警告。

AudioHardwareServiceSetPropertyData was deprecated in OS X 10.11

如何更新 OS X 10.11 的代码?

谢谢。 :)

正如 this answer to a similar Objective-C question, I'd suggest using ISSoundAdditions 中所建议的那样,您可以这样从 Swift 调用它:

NSSound.setSystemVolume(0.5)

-setSystemVolume begins around line 113 在 ISSoundAdditions.m 中的实现如果您对他们如何完成系统音量设置感到好奇。

为了澄清对我的回答的事实质疑评论(显然已删除),在使用 El Capitan SDK 编译时,ISSoundAdditions 中没有使用已弃用的 APIs – AudioHardwareServiceSetPropertyData 不是用过的。 AudioObjectSetPropertyData 确实是 API 如果使用已弃用的 AudioHardwareServiceSetPropertyData 应该切换到首先执行)。

我还不能发表评论,因此我 post 作为一个单独的答案。我已经将很棒的 ISSoundAdditions 更新为 true Swift 5 并给它一个漂亮的 public 界面,通过它您可以通过获取和设置 NSSound 的 class 属性 来管理系统音量– 例子:

NSSound.systemVolume += 0.2
NSSound.systemVolumeIsMuted = true

作为一个小好东西,您可以将系统音量静音(并且在后台无阻塞):

NSSound.systemVolumeFadeToMute(seconds: 5.0, blocking: false)

查看:GitHub NSSound_SystemVolumeExtension