更新记录

1.0.0(2026-11-05) 下载此版本

1.0.0

  • 首个版本:权限检查/申请/四态闭环/批量/跳设置

平台兼容性

pk-permission · 权限套件

权限检查 / 申请 / 永久拒绝引导 / 批量申请 / 跳系统设置。纯 JS,无原生插件。

四态闭环(竞品普遍只做两态,用户点「拒绝」后页面白屏无出路):

state 含义 建议动作
granted 已授权 直接继续
denied 已拒绝但可再次弹窗 引导后重试 request()
blocked 永久拒绝(不可再弹) 展示 guide → openSettings()
unsupported 当端不支持 / manifest 未声明 检查 manifestTip

安装

复制 uni_modules/pk-permission 到项目 uni_modules/ 下即可。

快速开始

import pkPerm from '@/uni_modules/pk-permission/js_sdk/index.js';

const r = await pkPerm.request('location', { explain: true });
if (r.state === 'blocked') {
  uni.showModal({ title: r.guide.title, content: r.guide.steps.join('\n') });
  await pkPerm.openSettings();
}

方法一览(全部暴露方法)

方法 签名 说明
init init(opts?) 初始化配置,幂等;任意方法首次调用时自动执行
check async check(name) → {ok,name,label,state,canAskAgain,guide} 查询当前状态,不弹窗
request async request(name, opts?) → {ok,state,guide,message} 申请权限;opts.explain 传 true 先弹内置说明,或传字符串自定义话术
requestAll async requestAll(names, opts?) → {allGranted,granted[],denied[],blocked[],details} 批量串行申请(避免多弹窗竞争),返回聚合分组
openSettings async openSettings() → {ok,platform?} 跳转本应用系统设置页(blocked 态标准出路,仅 App 端)
supported async supported() → {items:[{name,label,android,ios,mp,manifestTip}]} 全部逻辑权限清单与各端声明提示
describe async describe(name) → {ok,android,ios,mp,manifestTip} 单个权限的跨端配置详情
allNames allNames() → string[] 逻辑权限名列表(同步纯函数)
isSupported isSupported(name) → boolean 权限名是否受支持(同步纯函数)
PLUGIN_VERSION string 插件版本号

支持的逻辑权限

location 定位 · camera 相机 · album 相册 · record 麦克风 · notification 通知 · storage 存储 · backgroundLocation 后台定位 · bluetooth 蓝牙

中文名也可直接传('相机'),内部自动归一。

错误码

码 场景
E-PM-01 未知权限名
E-PM-02 权限被永久拒绝(blocked),错误码可用于排查
E-PM-03 跳转设置页失败

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

许可协议

MIT协议

暂无用户评论。