1.electron plist權(quán)限配置可以參考 鏈接。
2.參考 electron 文檔稼病,askForMediaAccess直到macOS 10.14 Mojave才需要用戶同意,因此如果您的系統(tǒng)運行的是10.13 High Sierra或更低版本充石,此方法將始終返回“true”猿挚。
/**
* A promise that resolves with `true` if consent was granted and `false` if it was
* denied. If an invalid `mediaType` is passed, the promise will be rejected. If an
* access request was denied and later is changed through the System Preferences
* pane, a restart of the app will be required for the new permissions to take
* effect. If access has already been requested and denied, it _must_ be changed
* through the preference pane; an alert will not pop up and the promise will
* resolve with the existing access status.
*
* **Important:** In order to properly leverage this API, you must set the
* `NSMicrophoneUsageDescription` and `NSCameraUsageDescription` strings in your
* app's `Info.plist` file. The values for these keys will be used to populate the
* permission dialogs so that the user will be properly informed as to the purpose
* of the permission request. See Electron Application Distribution for more
* information about how to set these in the context of Electron.
*
* This user consent was not required until macOS 10.14 Mojave, so this method will
* always return `true` if your system is running 10.13 High Sierra or lower.
*
* @platform darwin
*/
askForMediaAccess(mediaType: 'microphone' | 'camera'): Promise<boolean>;
為了適配,以下是解決方案:
async checkAndApplyDeviceAccessPrivilege(mediaType) {
const privilege = systemPreferences.getMediaAccessStatus(mediaType);
if (privilege !== 'granted') {
if (mediaType === 'camera' || mediaType === 'microphone') {
await systemPreferences.askForMediaAccess(mediaType);
return systemPreferences.getMediaAccessStatus(mediaType);
} else {
// screen
}
}
return privilege;
}
checkAndApplyDeviceAccessPrivilege('camera')
checkAndApplyDeviceAccessPrivilege('microphone')