Electron mac申请麦克风/摄像头权限,Electron无法打开麦克风

你可能遇到过这样的问题,程序已经安装在mac上了,但是无法获取mac的麦克风,如下在麦克风列表找不到你的程序,这是因为你的程序没有向mac申请获取麦克风权限,只有向mac申请麦克风权限的程序才会在此处显示,具体如何申请请看下面。
Electron mac申请麦克风/摄像头权限,Electron无法打开麦克风_第1张图片

配置流程:

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")

你可能感兴趣的:(Electron,vue,vue3,electron,macos,javascript)