更新记录
1.1.5(2024-08-02)
下载此版本
添加拦截器时增加 once 入参, once 只询问用户一次如果用户不同意申请或同意后拒绝权限将不会再次弹窗
1.1.3(2024-07-30)
下载此版本
增加 uni.scanCode 支持
1.1.2(2024-07-17)
下载此版本
chooseImage 和 chooseVideo 的相机和存储权限可以单独申请
查看更多
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
app-vue |
× |
× |
× |
× |
× |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
× |
× |
× |
× |
× |
× |
× |
× |
× |
x-perm-apply-instr
安卓应用申请权限时弹窗告知用户使用目的
用法说明, 在main.js引入
import { addPermisionInterceptor, removePermisionInterceptor } from '@/uni_modules/x-perm-apply-instr/js_sdk/index.js'
addPermisionInterceptor('chooseImage', '为了修改个人头像和发布信息图片视频等, 我们需要申请您设备的相机和存储权限')
addPermisionInterceptor('chooseVideo', '为了发布信息图片视频等, 我们需要申请您设备的相机和存储权限')
addPermisionInterceptor('saveImageToPhotosAlbum', '为了保存推广海报到手机相册, 我们需要申请您设备的存储权限')
addPermisionInterceptor('getLocation', '为了根据您的位置展示信息, 我们需要申请您设备的位置权限')
addPermisionInterceptor('makePhoneCall', '为了联系客服/用户/咨询等, 我们需要申请您设备的拨打电话权限')
addPermisionInterceptor('getRecorderManager', '为了使用语言消息功能等, 我们需要申请您设备的麦克风权限')
addPermisionInterceptor('startLocationUpdate', '为了根据您的位置展示信息, 我们需要申请您设备的位置权限')
addPermisionInterceptor('scanCode', '为了识别二维码信息, 我们需要申请您设备的相机权限')
addPermisionInterceptor 添加 uniApi 调用拦截
位置 |
类型 |
描述 |
可选值 |
0 |
String |
要拦截的 uniApi 名称 |
scanCode、chooseImage、chooseVideo、saveImageToPhotosAlbum、saveVideoToPhotosAlbum、getLocation、startLocationUpdate、makePhoneCall、getRecorderManager |
1 |
String |
申请权限说明信息 |
自定义文本 |
2 |
Boolean |
只询问一次, 用户不同意申请或拒绝权限将无法使用 uniApi, 如果要继续使用 Api 先用 removePermisionInterceptor 函数移除拦截再调用 Api |
true, false |
removePermisionInterceptor 移除 uniApi 调用拦截
位置 |
类型 |
描述 |
可选值 |
0 |
String |
要移除拦截的 uniApi 名称 |
同上 |
注意, 如果需要拦截 getRecorderManager , 在使用时不要直接在 script 下初始化, 会导致拦截失败, 请在 onLoad 或 onReady 中调用
<script>
// 错误写法
const recorderManager = uni.getRecorderManager();
// 正确写法
let recorderManager = null
export default {
onLoad() {
recorderManager = uni.getRecorderManager();
}
}
</script>
交互逻辑说明
- 在调用需要申请权限的 uni api 时会对该 uni api 进行拦截, 并弹出申请权限说明弹窗 (应用商店的审核要求)
- 用户如果不同意申请权限该 uni api 会进入错误回调, 如果用户同意申请权限会显示申请系统权限的弹窗(因为第一步有说明申请权限用途, 已达到应用商店审核要求)
- 当申请系统权限的弹窗显示时, 用户可以选择同意或拒绝(此时才是同意或拒绝权限), 同意后将会调用 uni api, 拒绝会进入 uni api 错误回调
插件如果对你有帮助给个好评吧~