申请麦克风/摄像头权限
第一步:修改 entitlements.mac.plist
javascript
<?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>第二步:在 package.json 进行如下配置
javascript
"mac": {
"entitlements": "build/entitlements.mac.plist",
"extendInfo": {
"NSMicrophoneUsageDescription": "授权访问麦克风",
"NSCameraUsageDescription": "授权访问摄像头"
}
}第三步:主进程
javascript
import { ipcMain,systemPreferences } from 'electron'
ipcMain.on('getMediaAccessStatus', async () => {
//检测麦克风权限是否开启
const getMediaAccessStatus = systemPreferences.getMediaAccessStatus('microphone')
if (getMediaAccessStatus !== 'granted') {
//请求麦克风权限
await systemPreferences.askForMediaAccess('microphone')
}
// 检测摄像头权限是否开启
const getCameraAccessStatus = systemPreferences.getMediaAccessStatus('camera')
if (getCameraAccessStatus !== 'granted') {
//请求摄像头权限
await systemPreferences.askForMediaAccess('camera')
}
})第四步:preload.js
javascript
import { contextBridge, ipcRenderer } from 'electron'
import { electronAPI } from '@electron-toolkit/preload'
// Custom APIs for renderer
const api = {
getMediaAccessStatus: () => {
ipcRenderer.send('getMediaAccessStatus')
}
}
if (process.contextIsolated) {
try {
contextBridge.exposeInMainWorld('electron', electronAPI)
contextBridge.exposeInMainWorld('api', api)
} catch (error) {
console.error(error)
}
} else {
// @ts-ignore (define in dts)
window.electron = electronAPI
// @ts-ignore (define in dts)
window.api = api
}渲染进程调用
javascript
onMounted(() => {
window.api.getMediaAccessStatus()
})