logo
常见问题
当前页

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

2023-03-31

这是由于 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()
}

Previous

Qt 的枚举窗口和 SDK 内的窗口枚举有什么对应关系?

Next

为什么有些文件转码后的字体在多端显示会不一致?