Electron 应用程序不要求在 macOS Monterey 上获得相机和麦克风许可
Electron app not asking for Camera and Microphone permission on macOS Monterey
我已经构建了一个堆栈电子和 reactjs 的应用程序。我正在尝试从应用程序访问摄像头和麦克风。但是该应用程序在请求时不会请求许可,也不会显示在系统偏好设置 - >摄像头和麦克风下的安全和隐私中。
以下是我使用的版本:
"electron": "^15.3.0",
"electron-builder": "^22.14.5",
"electron-devtools-installer": "^3.2.0",
"electron-notarize": "^1.1.1",
"electron-rebuild": "^3.2.3",
"react": "^17.0.2"
让我知道我缺少或需要更改的内容。提前致谢。
我也遇到了这个问题,它在 macOS Catalina 中运行良好,但在蒙特雷有时却没有。
看了electron官方文档后解决了:
“如果您计划使用 Electron 的 API 在您的应用程序中访问麦克风或摄像头,您还需要添加以下权利”
<key>com.apple.security.device.audio-input</key>
<true/>
<key>com.apple.security.device.camera</key>
<true/>
要添加权利,因为您正在使用 electron-builder
,您可以在 package.json
中使用一个配置,将其添加到 "mac"
下,您添加:
"extendInfo": {
"NSMicrophoneUsageDescription": "Please give us access to your microphone",
"NSCameraUsageDescription": "Please give us access to your camera",
"com.apple.security.device.audio-input": true,
"com.apple.security.device.camera": true
},
然后您需要添加以下行来请求媒体权限:
const { systemPreferences } = require('electron')
const microphone = systemPreferences.askForMediaAccess('microphone');
const camera = systemPreferences.askForMediaAccess('camera');
我已经构建了一个堆栈电子和 reactjs 的应用程序。我正在尝试从应用程序访问摄像头和麦克风。但是该应用程序在请求时不会请求许可,也不会显示在系统偏好设置 - >摄像头和麦克风下的安全和隐私中。 以下是我使用的版本:
"electron": "^15.3.0",
"electron-builder": "^22.14.5",
"electron-devtools-installer": "^3.2.0",
"electron-notarize": "^1.1.1",
"electron-rebuild": "^3.2.3",
"react": "^17.0.2"
让我知道我缺少或需要更改的内容。提前致谢。
我也遇到了这个问题,它在 macOS Catalina 中运行良好,但在蒙特雷有时却没有。
看了electron官方文档后解决了:
“如果您计划使用 Electron 的 API 在您的应用程序中访问麦克风或摄像头,您还需要添加以下权利”
<key>com.apple.security.device.audio-input</key>
<true/>
<key>com.apple.security.device.camera</key>
<true/>
要添加权利,因为您正在使用 electron-builder
,您可以在 package.json
中使用一个配置,将其添加到 "mac"
下,您添加:
"extendInfo": {
"NSMicrophoneUsageDescription": "Please give us access to your microphone",
"NSCameraUsageDescription": "Please give us access to your camera",
"com.apple.security.device.audio-input": true,
"com.apple.security.device.camera": true
},
然后您需要添加以下行来请求媒体权限:
const { systemPreferences } = require('electron')
const microphone = systemPreferences.askForMediaAccess('microphone');
const camera = systemPreferences.askForMediaAccess('camera');