700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 07_微信小程序-BLE低功耗蓝牙开发-权限申请

07_微信小程序-BLE低功耗蓝牙开发-权限申请

时间:2022-08-28 05:21:21

相关推荐

07_微信小程序-BLE低功耗蓝牙开发-权限申请

1. 在开发BLE之前,需要先申请相关权限,否则初始化蓝牙的时候,会返回错误码10001。授权相关可参考文档:

授权 | 微信开放文档微信开发者平台文档https://developers./miniprogram/dev/framework/open-ability/authorize.html#scope-%E5%88%97%E8%A1%A82.权限申请流程

1)检查该权限是否申请 wx.getSetting

2)如果没有,调用接口申请权限 wx.authorize

3)如果用户点击拒绝,弹出提示框,让用户在小程序设置中打开对应的权限

3.代码实现

1)我在index目录下新增了一个permisson.js文件,专门用来请求权限和检测权限

/*** 检测是否有对应的权限,通过回调函数返回结果* @param {String} perName 权限名称* @param {function} perResultCbFun 结果回调函数,参数为true表示成功*/function permission_check(perName, perResultCbFun) {// var arr = (typeof perArr != "object") ? [perArr] : perArr; // 确保参数总是数组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: '申请权限',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);}}}})}})}})}

导出这两个接口,否则其他js文件没有办法调用到

module.exports = {permission_check,permission_request}

在index.js引用该文件,并在页面加载的时候,申请权限

var permisson = require('permission.js');const blePermissionName = 'scope.bluetooth'; // 蓝牙对应的权限名称const blePermissionZhName = '蓝牙'; // 蓝牙权限对应的中文名称 onLoad() {//请求相关权限permisson.permission_request(blePermissionName, blePermissionZhName);},

实际效果:

1)用户第一次进入小程序,会弹出请求权限的提示框

2)如果用户点击拒绝,会弹出请求打开设置

3)如果用户点击确认,就会进入到小程序设置页面

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。