macOS 权利音频输入与麦克风

Hyn*_*rix 5 macos audio-recording entitlements mac-app-store appstore-sandbox

对于 macOS 沙箱,有两个授权密钥:

com.apple.security.device.audio-input
com.apple.security.device.microphone
Run Code Online (Sandbox Code Playgroud)

我测试了两者,都允许麦克风输入。

它们之间有什么区别?

The*_*man 8

com.apple.security.device.microphone是沙盒权利。如果您想在沙盒应用程序中使用麦克风,则需要启用它,

com.apple.security.device.audio-input是一种强化的运行时权利。如果您想在使用强化运行时构建的应用程序中使用麦克风,则需要启用它。

如果您的应用既经过沙盒处理又经过强化,您将需要同时启用两者。

在这种情况下,沙盒和强化提供了重叠保护。

在沙盒应用程序中,如果您没有com.apple.security.device.microphone权限,您的应用程序将无法访问麦克风。

在强化的应用程序中,如果您没有com.apple.security.device.audio-input权限,您的应用程序将无法使用 Core Audio 访问麦克风或任何音频输入,

很好地解释了沙箱和强化之间的关系。

我们可以在 Xcode 10 中看到 Hardened Runtime 的 Resource Access 部分与 App Sandbox 有很大的重叠,而 Runtime Exceptions 部分具有 Hardened Runtime 独有的功能。重叠的原因是什么?沙盒主要是为 App Store 设计的,而强化运行时主要是为 Developer ID 设计的。我刚刚详细解释了这两种技术如何适用于同一个应用程序并且不依赖于分发方法,但在不久的将来,大多数应用程序可能最多使用两者之一:Mac App 沙箱存储应用程序并强化经过公证的开发者 ID 应用程序。这就是存在重复权利的原因。