美文网首页Mac开发
Electron - Macos 麦克风和摄像头权限申请的坑

Electron - Macos 麦克风和摄像头权限申请的坑

作者: WhoJun | 来源:发表于2022-11-30 16:59 被阅读0次

    1.electron plist权限配置可以参考 链接
    2.参考 electron 文档,askForMediaAccess直到macOS 10.14 Mojave才需要用户同意,因此如果您的系统运行的是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')
    

    相关文章

      网友评论

        本文标题:Electron - Macos 麦克风和摄像头权限申请的坑

        本文链接:https://www.haomeiwen.com/subject/gdbdfdtx.html