产品 / 解决方案
平台 / 框架

macOS Monterey(12.2.1) 及以上版本运行 electron 应用导致摄像头等设备不能使用或者 crash?

产品 / 插件:实时音视频 / 实时语音

平台 / 框架:Electron

更新时间:2023-03-31 10:37


这是由于 macOS Monterey(12.2.1) 及以上版本需要主动设置这些设备的权限。请在 electron 主进程代码中添加以下处理:

const {systemPreferences} = require('electron')
async function checkDeviceAccessPrivilege()
{
    const cameraAccessPrivilege = systemPreferences.getMediaAccessStatus('camera');
    console.log(
        `checkDeviceAccessPrivilege before apply cameraAccessPrivilege: ${cameraAccessPrivilege}`
    );
    if (cameraAccessPrivilege !== 'granted') {
        await systemPreferences.askForMediaAccess('camera');
    }
    const micAccessPrivilege = systemPreferences.getMediaAccessStatus('microphone');
    console.log(
        `checkDeviceAccessPrivilege before apply micAccessPrivilege: ${micAccessPrivilege}`
    );
    if (micAccessPrivilege !== 'granted') {
        await systemPreferences.askForMediaAccess('microphone');
    }
    const screenAccessPrivilege = systemPreferences.getMediaAccessStatus('screen');
    console.log(
        `checkDeviceAccessPrivilege before apply screenAccessPrivilege: ${screenAccessPrivilege}`
    );
}

if(process.platform == 'darwin')
{
    checkDeviceAccessPrivilege()
}
本篇目录
下载 PDF