uniapp小程序授权统一处理
1.使用
1.将工具代码引入到utils中
const authorize = (scope, isOne = false, isMust = false) => {if (!scope || !authorizeObj[scope]) {return console.error('请传输需要获取权限的 scope,详见','https://uniapp.dcloud.net.cn/api/other/authorize.html#scope-%E5%88%97%E8%A1%A8')}return new Promise(async (resolve, reject) => {let hasAuthorize = await getAuthorize(scope)if (hasAuthorize) {resolve()} else {uni.authorize({scope: `scope.${scope}`,success: (authorizeRes) => {resolve()},fail: (authorizeErr) => {if (!isOne) {showModal(resolve, reject, scope, isMust)} else {reject()}}})}})
}
const showModal = (resolve, reject, scope, isMust) => {uni.showModal({title: '温馨提示',content: `获取${authorizeObj[scope]}失败,是否进入设置页开启您的权限?`,success: (showModalRes) => {if (showModalRes.confirm) {uni.openSetting({success: (openSettingRes) => {if (openSettingRes.authSetting[`scope.${scope}`]) {resolve()} else {if (isMust) {showModal(resolve, reject, scope, isMust)} else {reject()}}}});} else {reject()}}})
}//查看是否授权
const getAuthorize = (scope) => {return new Promise((resolve, reject) => {uni.getSetting({success(res) {resolve(res.authSetting[`scope.${scope}`])}})})
}
let authorizeObj = {'userLocation': '精确地理位置','userFuzzyLocation': '模糊地理位置','userLocationBackground': '后台定位','record': '麦克风权限','camera': '摄像头权限','bluetooth': '蓝牙权限','writePhotosAlbum': '添加到相册权限','addPhoneContact': '添加到联系人权限','addPhoneCalendar': '添加到日历权限','werun': '微信运动步数权限','address': '通讯地址权限','invoiceTitle': '发票抬头权限','invoice': '获取发票权限','userInfo': '用户信息权限'
}export default authorize
2.打开main.js 将方法挂载到全局
//授权方法全局挂载
import authorize from '@/utils/authorize.js'
Vue.prototype.$authorize = authorize
3.页面中使用
this.$authorize('writePhotosAlbum',true).then(()=>{//成功授权后相应逻辑
}).catch(()=>{//拒绝授权后相应逻辑
}).finally(() => {//无论授权成功或者失败都执行的逻辑
});
2.参数详解
const authorize = (scope, isOne = false, isMust = false) => {}
| 参数名 | 默认值 | 参考值 | 备注 |
|---|---|---|---|
| scope | 无 | userLocation、userFuzzyLocation… | 权限标识目前支持参数如下 |
| isOne | false | true、false | 授权是否只能一次(是否支持弹窗跳转设置页) |
| isMust | false | true、false | 是否必须授权(如果必须授权,在设置页如果没有开启权限返回页面还会弹提示) |
scope :权限标识 参考 文档
目前支持参数
'userLocation': '精确地理位置',
'userFuzzyLocation': '模糊地理位置',
'userLocationBackground': '后台定位',
'record': '麦克风权限',
'camera': '摄像头权限',
'bluetooth': '蓝牙权限',
'writePhotosAlbum': '添加到相册权限',
'addPhoneContact': '添加到联系人权限',
'addPhoneCalendar': '添加到日历权限',
'werun': '微信运动步数权限',
'address': '通讯地址权限',
'invoiceTitle': '发票抬头权限',
'invoice': '获取发票权限',
'userInfo': '用户信息权限'
isOne :是否只弹一次授权 默认不是只弹一次
isMust :是否强制授权 true强制授权 false不强制授权
亲测好用
相关文章:
uniapp小程序授权统一处理
1.使用 1.将工具代码引入到utils中 const authorize (scope, isOne false, isMust false) > {if (!scope || !authorizeObj[scope]) {return console.error(请传输需要获取权限的 scope,详见,https://uniapp.dcloud.net.cn/api/other/authorize.html#scope-…...
光学仿真|优化汽车内部照明体验
当我们谈论优化人类感知的内部照明时,我们实际上指的是两个重点领域:安全性和驾驶员体验。如果内部照明可以提供尽可能最佳的体验,驾驶员则能够更好地应对颇具挑战性或意外的驾驶状况,并且减轻疲劳感。除了功能优势外,…...
Spring XML使用CASE WHEN处理SELECT字段
在日常开发中,经常会碰到需要导出的情况。而一些枚举值或者状态一般是定义成整型,这个时候需要对数据进行转换,转换成对应的文本再导出。 在XML中用CASE WHEN来根据不同的查询结果做不同的处理。 比如 SELECT name AS 姓名, age AS 年龄 C…...
关于C#中使用多线程的讨论
关于C#中使用多线程的讨论 C# 中 Thread 调用的函数有返回值 没有输入应该如何解决 如果你想在一个新的线程中调用一个带返回值但没有输入参数的函数,可以使用 Thread 类的委托 ThreadStart 来创建一个新的线程,并在其中调用该函数。然后,你可以使用 Thread 类的 Join 方法…...
工程机械数字孪生可视化平台建设,推动大型装备智能化数字化转型升级
随着信息技术的迅猛发展,数字孪生技术作为一项新兴技术应运而生。数字孪生是指通过数学模型和仿真技术,将实际物理对象与其数字化虚拟模型相互关联,实现对物理对象的全生命周期管理和智能优化。在工程机械领域,巨蟹数科从数字孪生…...
Linux 网络流量监控利器 iftop命令详解及实战
简介 iftop 是什么 在 Linux 系统下即时监控服务器的网络带宽使用情况,有很多工具,比如 iptraf、nethogs 等等,但是推荐使用小巧但功能很强大的 iftop 工具。 iftop 是 Linux 系统一个免费的网卡实时流量监控工具,类似于 top 命令…...
protected by SourceGuardian and requires a SourceGuardian loader ‘ixed.8解决方案
php相关问题 安装程序提示以下内容 遇到某些php程序的安装提示: PHP script ‘/www/wwwroot/zhengban.youyacao.com/install/index.php’ is protected by SourceGuardian and requires a SourceGuardian loader ‘ixed.8.1.lin’ to be installed. 1) Click her…...
KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(14)
接前一篇文章:KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(13) 上一回讲完了drivers/gpu/drm/drm_framebuffer.c中的framebuffer_check函数中的第一个for循环,本回继续讲解framebuffer_check()接下来的代码。为了便于理解,再次贴出其源码,如下所示: static …...
2023-macOS下安装anaconda,终端自动会出现(base)字样,如何取消
2023-macOS下安装anaconda,终端自动会出现(base)字样,如何取消 安装后,我们再打开终端,就会自动出现了(base) 就会出现这样子的,让人头大, 所以我们要解决它 具体原因是 安装了anac…...
Nginx搭载负载均衡及前端项目部署
目录 编辑 一.Nginx安装 1.安装所需依赖 2.下载并解压Nginx安装包 3.安装nginx 4.启动Nginx服务 二.Tomcat负载均衡 1.准备环境 1.1 准备两个Tomcat 1.2 修改端口号 1.3 配置Nginx服务器集群 2.效果展示 编辑三.前端项目打包 编辑四.前端项目部署 1.上传项目…...
深度学习——炼丹
学习率调整策略 自定义学习率调整策略 简单版 net MyNet()optimoptim.Adam(net.parameters(),lr0.05) for param_group in optim.param_groups: param_group["lr"] param_group["lr"]*0.5print(param_group["lr"]) #0.25复杂版&#…...
Matlab中的app设计
1.窗口焦点问题: 窗口焦点问题:确保你的应用程序窗口正常处于焦点状态。有时,其他窗口的弹出或焦点切换可能导致应用程序最小化。点击应用程序窗口以确保它处于焦点状态。 窗口管理:确保你的 MATLAB 或操作系统没有未处理的错误或…...
曾经遇到过的无法解释的问题
因为不能直接展示生产数据与生产数据结构,所以写一个简单的例子 class Stu{ private String name; private int age; getter setter constructor 略 } List<Stu> list new ArrayList(); list.add(new Stu("s1",16)); list.add(new Stu("…...
基于uniapp与uview做一个按拼音首字母排序的通讯录页面
效果图: 第一步导入pinyin库并应用,用于区分汉字的拼音首字母 npm i pinyin import pinyin from "pinyin" 完整算法: function getListByPinyinFirstLetter(data) {const newList {};for (const item of data) {let firstLett…...
网络工程师-入门基础课:华为HCIA认证课程介绍
【微/信/公/众/号:厦门微思网络】 华为HCIA试听课程:超级实用,华为VRP系统文件详解 华为HCIA试听课程:不会传输层协议,HCIA都考不过 华为HCIA试听课程:网络工程师的基本功:网络地址转换NAT 一…...
玻色量子成功研制光量子计算专用光纤恒温控制设备——“量晷”
近日,北京玻色量子科技有限公司(以下简称“玻色量子”)成功研制出一款高精度量子计算专用光纤恒温控制设备——“量晷”,该设备能将光纤的温度变化稳定在千分之一摄氏度量级,即能够做到0.001C的温度稳定维持…...
力扣:147. 对链表进行插入排序(Python3)
题目: 给定单个链表的头 head ,使用 插入排序 对链表进行排序,并返回 排序后链表的头 。 插入排序 算法的步骤: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,…...
OpenCV4(C++)——形态学(腐蚀、膨胀)
文章目录 一、腐蚀(erode)二、膨胀(dilate)三、形态学操作四、总结 一、腐蚀(erode) OpenCV 4提供了用于图像腐蚀的erode()函数。 void cv::erode(src, dst, kernel, anchor, iterations, borderType, bo…...
C++设计模式_24_Visitor 访问器
Visitor 访问器也是属于“行为变化”模式。 文章目录 1. 动机( Motivation)2. 代码演示Visitor 访问器3. 模式定义4. 结构(Structure)5. 要点总结6. 其他参考1. 动机( Motivation) 在软件构建过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基…...
el-tabel表格加个多选框
<template><div><el-checkbox v-model"checked" :disabled"checkedDis" change"onAllSelectChange">多选框</el-checkbox>点击多选框,禁用列表复选框<el-table ref"multipleTable" :data"…...
JiYuTrainer:如何在不影响学习的前提下解除极域电子教室限制的3种方法
JiYuTrainer:如何在不影响学习的前提下解除极域电子教室限制的3种方法 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 在数字化教学环境中,极域电子教室&a…...
清音刻墨Qwen3实战:如何快速为视频生成毫秒级精准字幕?
清音刻墨Qwen3实战:如何快速为视频生成毫秒级精准字幕? 1. 引言:视频字幕的精准革命 在视频内容爆炸式增长的今天,字幕已经成为提升观看体验的关键要素。然而,传统字幕制作面临两大痛点:一是语音识别&…...
数据分析之物化视图(Materialized View)
在数据分析场景中,随着数据量激增和查询复杂度提升,传统视图的性能瓶颈日益凸显,物化视图(Materialized View,简称MV)作为“预计算物理存储”的优化方案,成为提升数据分析效率的核心工具。它本质…...
NCM格式转换全攻略:3步解锁网易云音乐文件自由播放
NCM格式转换全攻略:3步解锁网易云音乐文件自由播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否遇到过下载的网易云音乐NCM文件无法在车载音响、MP3播放器等设备播放的问题?ncmdump作为一款高效的NC…...
ZenTimings:释放Ryzen平台内存潜力的专业调校工具
ZenTimings:释放Ryzen平台内存潜力的专业调校工具 【免费下载链接】ZenTimings 项目地址: https://gitcode.com/gh_mirrors/ze/ZenTimings 在AMD Ryzen平台的性能优化领域,内存时序调校常常被视为提升系统响应速度的"最后一块拼图"。然…...
万象熔炉 | Anything XL实操手册:负向提示词避坑与高质量出图技巧
万象熔炉 | Anything XL实操手册:负向提示词避坑与高质量出图技巧 1. 工具概览:Anything XL能为你做什么 万象熔炉 | Anything XL是一款基于Stable Diffusion XL开发的本地图像生成工具,专门为二次元和通用风格图像生成而优化。它最大的特点…...
openGauss 2.0.0在openEuler上的保姆级安装指南(含一键脚本)
openGauss 2.0.0在openEuler上的极速部署实战手册 在国产化技术生态快速发展的今天,openGauss作为企业级开源数据库的标杆产品,正受到越来越多开发者和企业的关注。本文将带你深入探索在openEuler操作系统上部署openGauss 2.0.0的全过程,不仅…...
腾讯混元翻译模型部署全攻略:HY-MT1.5-1.8B离线翻译系统搭建
腾讯混元翻译模型部署全攻略:HY-MT1.5-1.8B离线翻译系统搭建 1. 项目背景与模型介绍 在当今全球化商业环境中,语言障碍仍然是企业跨国运营的主要挑战之一。腾讯混元团队推出的HY-MT1.5-1.8B翻译模型,是一款专为企业级应用设计的高性能机器翻…...
RTX 4090D镜像免配置优势:PyTorch 2.8环境无需conda/pip手动安装依赖
RTX 4090D镜像免配置优势:PyTorch 2.8环境无需conda/pip手动安装依赖 1. 为什么选择预装环境镜像 深度学习项目从零搭建环境往往是最耗时的环节之一。传统方式需要手动安装CUDA、PyTorch和各种依赖库,不仅步骤繁琐,还经常遇到版本冲突问题。…...
别再只调sklearn了!手把手教你从零用NumPy实现逻辑回归(附完整代码与可视化)
从零构建逻辑回归:用NumPy揭开机器学习算法的数学面纱 在机器学习领域,逻辑回归作为分类任务的基石算法,其重要性不言而喻。但当我们习惯于调用sklearn的几行代码完成训练时,是否曾思考过这个经典算法背后的数学本质?本…...
