微信小程序 - 获取权限

一、前言

领导知道我是用uniapp写的APP,所以让我把App转成微信小程序

二、开发 - 微信小程序的权限获取

业务代码层面其实不需要修改很多,主要是一些plus的兼容问题需要使用#ifdef去解决,下面主要介绍一下微信小程序权限获取相关的配置和写法

1. manifest.json 配置

如果有使用相关权限,需要在mp-weixin里面添加对应的permission,代码如下

⚠️注意:这个必须加上,如果不在permission中加上对应的权限说明,正式环境是无法去获取对应权限的,即wx.authorize失效

JSON 复制代码
{
    "mp-weixin" : {
        "permission" : {
            "scope.camera": {
              "desc": "需要访问您的摄像头以提供拍照翻译功能"
            },
            "scope.record": {
              "desc": "需要访问您的麦克风以提供语音翻译功能"
            }
        }
    }
}
2. 查询权限

摄像头权限为例子,每次在使用摄像头功能前去前置检测是否有权限

使用到的api

js 复制代码
const checkPermission = () => {
    wx.getSetting({
        success: (res) => {
            // 在 manifest.json 有声明过
            const permissionName = 'scope.camera'
            const hasPermission = res.authSetting[permissionName]
            
            if (hasPermission === true) {
            
                // 已经同意了权限
                // 执行相关初始化逻辑
              
            } else if (hasPermission === false) {
            
                // 已经拒绝了权限
                // 引导用户手动去设置页面开启相关权限(图一所示)
                wx.showModal({
                    title: '权限提示',
                    content: '请前往设置页面开启摄像头权限',
                    success: (res) => {
                        if (res.confirm) {
                            wx.openSetting()
                        } else {
                            // 用户拒绝去设置
                            // 显示没有权限相关提示模块 (图二所示)
                        }
                    }
                })
                
            } else {
            
                // 还没申请过该权限
                // 打开自定义的提示dialog,说明你需要干嘛(图三所示)
               
            }
        }
    
    })

}

图一

图二

图三

3. 获取权限

摄像头权限为例子,点击图二的继续

js 复制代码
const handleAuthorize = () => {

    // 获取某个权限,一次只能获取一个(图四所示)
    wx.authorize({
        scope: 'scope.camera',
        success: () => {
        
            // 同意授权
            // 关闭提示弹窗 && 初始化拍照逻辑(图五所示)
            
        },
        fail: () => {
        
            // 拒绝授权 | 接口调用失败
            // 关闭弹窗 && 提示错误 && 保存日志 && 显示没有权限相关提示模块(图二所示)
        }
    })
}

图四

图五

三、上线 - 配置隐协议

开发环境和真机调试对于权限都是很宽松的,但是到了上线,则需要配置隐私协议,否则无法获取到相关权限。具体操作参考官方文档即可

相关推荐
2501_933907211 天前
深圳本凡科技专业企业APP开发,助力手机应用创新优化
科技·微信小程序·小程序
java1234_小锋1 天前
分享一套优质的微信小程序校园志愿者系统(SpringBoot后端+Vue3管理端)
微信小程序·小程序·校园志愿者
2501_916008891 天前
深入解析iOS机审4.3原理与混淆实战方法
android·java·开发语言·ios·小程序·uni-app·iphone
QT.qtqtqtqtqt1 天前
uni-app小程序前端开发笔记(更新中)
前端·笔记·小程序·uni-app
喵喵虫2 天前
uniapp修改封装组件失败 styleIsolation
uni-app
游戏开发爱好者82 天前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
2501_915106322 天前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
2501_915106322 天前
使用 Sniffmaster TCP 抓包和 Wireshark 网络分析
网络协议·tcp/ip·ios·小程序·uni-app·wireshark·iphone
宠友信息2 天前
2025社交+IM及时通讯社区APP仿小红书小程序
java·spring boot·小程序·uni-app·web app
“负拾捌”2 天前
python + uniapp 结合腾讯云实现实时语音识别功能(WebSocket)
python·websocket·微信小程序·uni-app·大模型·腾讯云·语音识别