uniapp授权如何多个权限

随遇而安 / 2024-11-06 / 原文

<template>
    <div>
        <button @click="handleRequestPermission">拉取权限</button>
    </div> 
</template>
<script>
export default {
    data() {
        return {
            hasMicPermission: false, //录音权限
            hasCameraPermission: false, //摄像头权限
        }
    },
    methods: {
        checkPermission() {
            const that = this;
            // 检查相机麦克风权限  
            // #ifdef MP
            uni.getSetting({
                success: async function (res) {
                    that.hasMicPermission = res.authSetting['scope.record'];
                    that.hasCameraPermission = res.authSetting['scope.camera'];
                    if (!that.hasMicPermission) {
                        uni.authorize({
                            scope: "scope.record",
                            success(res) {
                                that.hasMicPermission = true;
                                console.log("同意麦克风授权");
                            },
                            fail(err) {
                                console.log("拒绝麦克风授权");
                            }
                        })
                    }
                    if (!that.hasCameraPermission) {
                        uni.authorize({
                            scope: "scope.camera",
                            success(res) {
                                that.hasCameraPermission = true;
                                console.log("同意相机授权");
                            },
                            fail() {
                                console.log("拒绝相机授权");
                            }
                        })
                    }
                }
            });
            // #endif
        },
        // 操作时候,判断是否有相关权限
        handleRequestPermission() {
            const that = this;
            uni.showModal({
                title: '提示',
                content: '缺少相关权限,是否前往开启?',
                success(res) {
                    if (res.confirm) {
                        // 点击确定按钮,尝试拉起权限
                        uni.openSetting({
                            success(res) {
                                console.log(res)
                                //相机
                                if (res.authSetting['scope.camera']) {
                                    that.hasCameraPermission = true;
                                } else {
                                    uni.showToast({
                                        title: "摄像头权限未开启",
                                        icon: "none"
                                    });
                                }
                                //麦克风
                                if (res.authSetting['scope.record']) {
                                    that.hasMicPermission = true;
                                } else {
                                    uni.showToast({
                                        title: "麦克风权限未开启",
                                        icon: "none"
                                    });

                                }
                            },
                            fail(err) {
                                uni.navigateBack()
                            }
                        });
                    }
                },
            });
        },
    },
    mounted() {
        // 检查权限
        this.checkPermission();
    }
}
</script>