你可能遇到过这样的问题,程序已经安装在mac上了,但是无法获取mac的麦克风,如下在麦克风列表找不到你的程序,这是因为你的程序没有向mac申请获取麦克风权限,只有向mac申请麦克风权限的程序才会在此处显示,具体如何申请请看下面。
配置流程:
1.新建entitlements.mac.plist文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
<key>com.apple.security.device.audio-input</key>
<true/>
<key>com.apple.security.device.camera</key>
<true/>
</dict>
</plist>
2.在package.json进行如下配置
"mac": {
"entitlements": "build/entitlements.mac.plist",
"extendInfo": {
"NSMicrophoneUsageDescription": "授权访问麦克风",
"NSCameraUsageDescription": "授权访问摄像头"
}
}
3.完成以上配置后在主进程中添加申请麦克风及摄像头权限的逻辑
const { ipcMain,systemPreferences } = require('electron')
//获取麦克风权限
ipcMain.on("getMediaAccessStatus",async ()=>{
//检测麦克风权限是否开启
let getMediaAccessStatus = systemPreferences.getMediaAccessStatus('microphone')
if(getMediaAccessStatus !== 'granted'){
//请求麦克风权限
await systemPreferences.askForMediaAccess('microphone')
}
})
申请麦克风权限
在渲染进程中发送消息给注进程,让他申请麦克风或者摄像头权限
let {ipcRenderer} = window.require("electron");
ipcRenderer.send("getMediaAccessStatus")