微信小程序权限检测封装, 针对用户拒绝授权情况
2022/9/2 1:24:21
本文主要是介绍微信小程序权限检测封装, 针对用户拒绝授权情况,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
针对用户拒绝授权的情况; 这边以 蓝牙权限为例子:
点击按钮=>
用户拒绝后=>
代码:
<view> <button bindtap="initBlue">连接蓝牙</button> </view>
const permisson = require("../../utils/tools/permisson"); // 权限校验 const blePermissionName = "scope.bluetooth"; // 蓝牙对应的权限名称 const blePermissionZhName = "蓝牙"; // 蓝牙权限对应的中文名称 Page({ data: {}, initBlue: function () { // 初始化蓝牙模块。 wx.openBluetoothAdapter({ success: (res) => { console.log("初始化蓝牙设备成功"); this.findBlue(); //2.0 }, fail: (err) => { console.log(err); //如果手机上的蓝牙没有打开,可以提醒用户 wx.showModal({ showCancel: false, content: "手机蓝牙未打开", }); //请求蓝牙权限 permisson.permission_request(blePermissionName, blePermissionZhName); }, }); }, findBlue() { // 开始搜寻附近的蓝牙外围设备 wx.startBluetoothDevicesDiscovery({ allowDuplicatesKey: false, interval: 0, success: (res) => { console.log("搜索附近的蓝牙设备", res); }, fail: (res) => { console.log("搜索附近的蓝牙设备失败"); }, }); }, });
permisson.js
/** * 检测是否有对应的权限,通过回调函数返回结果 * @param {String} perName 权限名称 * @param {function} perResultCbFun 结果回调函数,参数为true表示成功 */ function permission_check(perName, perResultCbFun) { wx.getSetting({ success(res) { if (!res.authSetting[perName]) { if (typeof perResultCbFun == "function") { console.log("授权状态获取失败", perName); perResultCbFun(false); } } else { if (typeof perResultCbFun == "function") { console.log("授权状态获取成功", perName); perResultCbFun(true); } } }, fail(res) { console.log("授权状态获取失败", perName); if (typeof perResultCbFun == "function") { perResultCbFun(false); } }, }); } /** * 请求对应的权限 * @param {String} perName 权限名称 * @param {String} perZhName 权限对应的中文名称,用来做提示用 * @param {function} perRequestCbFun 请求结果回调(参数为true表示成功) */ function permission_request(perName, perZhName, perRequestCbFun) { permission_check(perName, (perCheckResualt) => { if (perCheckResualt) { // 权限已经请求成功 if (typeof perRequestCbFun == "function") { perRequestCbFun(true); } } else { // 如果没有该权限,就去申请该权限 wx.authorize({ scope: perName, success() { // 用户已经同意小程序使用ble,后续调用 wx.startRecord 接口不会弹窗询问 if (typeof perRequestCbFun == "function") { perRequestCbFun(true); } }, fail() { // 用户拒绝授予权限 console.log("用户拒绝授权", perName); // 弹出提示框,提示用户需要申请权限 wx.showModal({ title: "申请权限", showCancel: false, content: "需要使用" + perZhName + "权限,请前往设置打开权限", success(res) { if (res.confirm) { console.log("用户点击确定"); // 打开权限设置页面,即使打开了权限界面,也不知道用户是否打开了权限,所以这里返回失败 wx.openSetting({ success(res) { if (typeof perRequestCbFun == "function") { perRequestCbFun(false); } }, fail(err) { if (typeof perRequestCbFun == "function") { perRequestCbFun(false); } }, }); } else if (res.cancel) { if (typeof perRequestCbFun == "function") { perRequestCbFun(false); } } }, }); }, }); } }); } module.exports = { permission_request, };
其它权限你只要修改 这两个值就行:
const blePermissionName = "scope.bluetooth"; // 蓝牙对应的权限名称 const blePermissionZhName = "蓝牙"; // 蓝牙权限对应的中文名称
微信文档传送门https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/AuthSetting.html
更多参考链接https://blog.csdn.net/Losthome/article/details/122962853
这篇关于微信小程序权限检测封装, 针对用户拒绝授权情况的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-13微信小程序如何封装接口域名?-icode9专业技术文章分享
- 2024-11-13如何在微信小程序中实现直传功能?-icode9专业技术文章分享
- 2024-11-13如何在小程序的地图组件中添加标记和文字?-icode9专业技术文章分享
- 2024-11-13在微信小程序的地图组件中如何实现自定义标记和气泡?-icode9专业技术文章分享
- 2024-11-01微信小程序教程:零基础入门到实战
- 2024-11-01微信小程序全栈教程:从入门到实践
- 2024-10-31微信小程序怎么实现关注公众号功能-icode9专业技术文章分享
- 2024-10-30微信小程序cover-view,支持bindtap吗-icode9专业技术文章分享
- 2024-10-30微信小程序的cover-image支持bindtap吗-icode9专业技术文章分享
- 2024-10-30微信小程序web-view怎么设置高度?-icode9专业技术文章分享