当前位置: 首页 > news >正文

vue3+ts+uniapp小程序封装获取授权hook函数

vue3+ts+uniapp小程序封装获取授权hook函数

小程序授权的时候,如果点击拒绝授权,然后就再也不会出现授权了,除非用户手动去右上角…设置打开

通过uni官方api自己封装一个全局的提示:
uni.getSetting :http://uniapp.dcloud.io/api/other/setting?id=getsetting
uni.authorize:http://uniapp.dcloud.io/api/other/authorize?id=authorize
uni.openSetting:https://uniapp.dcloud.net.cn/api/other/setting.html#opensetting

具体代码
src\composable\index.ts

/*** 授权综合逻辑* @param {*} scope 权限代表*/
export const useShowPullAuth = () => {const pullAuth = (scope: keyof UniApp.AuthSetting): void => {const map: Record<string, string> = {'scope.userInfo': '用户信息','scope.userLocation': '地理位置','scope.userLocationBackground': '后台定位','scope.address': '通信地址','scope.record': '录音功能','scope.writePhotosAlbum': '保存到相册','scope.camera': '摄像头','scope.invoice': '获取发票','scope.invoiceTitle': '发票抬头','scope.werun': '微信运动步数',}uni.getSetting({success() {// scope 存在if (map[scope]) {// 提前向用户发起授权请求uni.authorize({scope,fail() {const word = map[scope]uni.showModal({content: `检测到您没打开${word}权限,是否去设置打开?`,confirmText: '确认',cancelText: '取消',success: (res) => {if (res.confirm) {// 打开授权页uni.openSetting({success: (res) => {if (res.authSetting[scope]) {uni.showToast({title: '授权成功',icon: 'none',})} else {uni.showToast({title:'未授权,将会影响使用小程序部分功能,可自行去右上角(...)中-设置手动打开!',icon: 'none',})}},})} else {uni.showToast({title:'未授权,将会影响使用小程序部分功能,可自行去右上角(...)中-设置手动打开!',icon: 'none',duration: 2500,})}},})},})} else {// 不存在授权 scopeuni.showToast({title: '无此授权功能',icon: 'none',})}},})}return { pullAuth }
}

在需要用的页面使用 onLoad

放在onLoad是为了一进来就进行调用,当scope是对的就会进行发起授权,当你之前已经授权过了,就会什么也不做,若是发现未授权,就会弹窗手动引导你去系统授权设置里!

<script setup lang="ts">
import { useShowPullAuth } from '@/composable'
import { onLoad } from '@dcloudio/uni-app'
onLoad(() => {console.log('onLoad')pullAuth('scope.camera')
})
</script>

在这里插入图片描述

http://www.lryc.cn/news/169577.html

相关文章:

  • 绘图(一)弹球小游戏
  • uniapp滑动事件
  • 入门人工智能 —— 学习 python 使用 IDE :vscode 完成编程 (2)
  • MyBatis字段名和属性名不一样的解决方案
  • Postman应用——Collection、Folder和Request
  • 驱动开发,stm32mp157a开发板的led灯控制实验
  • 黑客入侵机构,导致2万条信息被卖
  • 循环购:让消费者和商家共赢的新型电商模式
  • 分布式缓冲-Redis
  • C# 流Stream详解(3)——FileStream源码
  • C语言的文件操作(炒详解)
  • 27.基于ADS的不等分威尔金森功分器设计
  • Linux自用命令
  • clickhouse union all之后数据量不一致
  • 力扣刷题19-删除链表的倒数第N个节点
  • Unity中的简单数据存储办法
  • Pytorch-MLP-CIFAR10
  • SQL2 查询多列
  • 算法分享三个方面学习方法(做题经验,代码编写经验,比赛经验)
  • 爬虫 — 验证码反爬
  • 视频图像处理算法opencv模块硬件设计图像颜色识别模块
  • 目标检测网络之Fast-RCNN
  • Golang Gorm 创建HOOK
  • 计算机视觉的应用15-图片旋转验证码的角度计算模型的应用,解决旋转图片矫正问题
  • 【Seata】分布式事务问题和理论基础
  • 文件打包解包的方法
  • npm 清缓存(重新安装node-modules)
  • sqlserver查询表中所有字段信息
  • 二叉树的概念、存储及遍历
  • 【面试题】智力题