# m-permission-manager 插件发布指南 面向插件作者,说明如何将本插件提交到 DCloud 插件市场,以及后台各字段的填写参考。 --- ## 发布前检查清单 ### 代码与文档 - [ ] `package.json` 中 `id`、`version`、`description`、`keywords` 已填写 - [ ] `dcloudext.type` 为 `uts` - [ ] `dcloudext.declaration` 中 ads / data / permissions 已如实填写 - [ ] `uni_modules.platforms` 中各端支持情况准确(vue3=y,H5/小程序=x) - [ ] `readme.md` 完整(安装、API、权限、FAQ) - [ ] `使用规范.md`、`权限配置说明.md`、`changelog.md` 已更新 - [ ] `index.d.ts` 与 `index.js` 导出一致 ### 功能验证 - [ ] Android 真机:相机 / 麦克风 / 定位 / 蓝牙申请与检查 - [ ] Android 12+ 真机:蓝牙 `BLUETOOTH_CONNECT` / `BLUETOOTH_SCAN` - [ ] Android 13+ 真机:相册 `READ_MEDIA_IMAGES` 自动映射 - [ ] Android 真机:悬浮窗(`overlay`)、修改系统设置(`writeSettings`)跳转设置页 - [ ] iOS 14+ 真机:相机 / 麦克风 / 定位 / 蓝牙 / 相册 - [ ] iOS 真机:拒绝后 `openPermissionSettings('bluetooth')` 引导文案正确 - [ ] Harmony API 12+ 真机:5 项 normal 权限申请(默认 `module.json5`) - [ ] Harmony 真机:相册 ACL 未声明时返回 `restricted` / 9020003 - [ ] 拒绝授权时引导跳转系统设置 - [ ] H5 环境明确不可用(9020001) ### 打包验证 - [ ] 自定义基座可正常运行 - [ ] 云打包 / 本地打包正式包可正常运行 - [ ] 修改 UTS 代码后已重新制作基座 --- ## 提交到插件市场 1. 登录 [DCloud 插件市场](https://ext.dcloud.net.cn/) 2. 进入 **我的插件** → **发布插件** 3. 插件类型选择 **UTS 插件** 4. 上传 `uni_modules/m-permission-manager` 目录(或打包 zip) 5. 按下方表格填写市场展示信息 --- ## 市场后台填写参考 ### 基本信息 | 字段 | 填写内容 | | --- | --- | | **插件名称** | m-permission-manager 跨端权限管理 | | **插件 ID** | m-permission-manager | | **插件类型** | UTS 插件 | | **价格** | 免费(或按实际定价) | | **版本号** | 与 `package.json` → `version` 一致,如 `1.0.0` | ### 标题(建议) ``` m-permission-manager - uni-app 跨端权限管理(Android/iOS/鸿蒙) ``` ### 一句话描述 ``` UTS 权限插件,Android / iOS / Harmony 三端统一 API,检查与申请运行时权限,支持跳转系统设置。 ``` ### 详细描述(可直接粘贴) ``` m-permission-manager 是 uni-app Vue3 跨端权限管理 UTS 插件,支持 Android、iOS、Harmony 三端。 【核心能力】 · 17 种统一权限 Key,三端通用命名 · 同步 / 异步检查权限状态 · 单个 / 批量申请权限 · 按权限类型跳转系统设置页 · 获取当前平台支持的权限列表 【平台支持】 · Android:17 项权限(含悬浮窗、短信、电话等 Android 专属) · iOS:10 项通用权限(相机、相册、定位、麦克风、蓝牙、通讯录等) · Harmony:10 项通用权限(默认 5 项 normal 可直接安装,相册/通讯录需 ACL) 【集成方式】 1. 导入 uni_modules 插件 2. 在宿主 manifest.json(Android/iOS)及鸿蒙 module.json5 中声明所需权限 3. 使用 @/utils/permission-manager Promise 封装或直接调用 UTS API 详细权限配置见插件内《权限配置说明.md》,集成规范见《使用规范.md》。 ``` ### 标签 / 关键词 ``` 权限, permission, 运行时权限, 蓝牙, 相机, 定位, Android, iOS, Harmony, 鸿蒙, UTS ``` ### 使用说明(市场「使用说明」字段) 可直接粘贴以下内容,或填写插件 readme 链接: ``` 【快速开始】 1. 从插件市场导入 m-permission-manager 到项目 uni_modules 目录 2. 在 manifest.json 中声明宿主所需权限(Android permissions / iOS privacyDescription) 鸿蒙端见插件 utssdk/app-harmony/module.json5,详见《权限配置说明.md》 3. 重新制作自定义基座或云打包(UTS 插件不支持标准基座) 4. 在代码中调用: import { checkPermission, requestPermission, openPermissionSettings, } from '@/utils/permission-manager' const result = await checkPermission('camera') const granted = await requestPermission('camera') if (!granted) { await openPermissionSettings('camera') } 【重要说明】 · 仅支持 App 端(Android / iOS / Harmony),不支持 H5 与小程序 · 插件负责运行时检查与申请,宿主仍需在 manifest 中声明静态权限 · iOS 蓝牙需在 privacyDescription 中配置 NSBluetoothAlwaysUsageDescription · 鸿蒙相册/通讯录为 system_basic 权限,默认调试包未声明,需 ACL 签名后启用 完整文档: · readme.md — API 与快速开始 · 使用规范.md — 集成约束与推荐流程 · 权限配置说明.md — 三端权限文件配置详解 ``` ### 权限与隐私声明(`dcloudext.declaration` 对应项) | 字段 | 填写内容 | | --- | --- | | **是否含广告** | 无 | | **是否采集数据** | 不上传任何用户数据,仅在本地检查与申请系统权限 | | **权限说明** | Android:宿主 manifest 声明对应 android.permission.*;iOS:宿主 manifest 声明 NSCameraUsageDescription 等 Info.plist 键;Harmony:插件 module.json5 声明 ohos.permission.*,运行时申请 | ### 平台支持(与 package.json 一致) | 平台 | 支持情况 | | --- | --- | | uni-app Vue3 | ✅ | | uni-app Vue2 | ❌ | | H5 | ❌ | | 小程序 | ❌ | | Android App | ✅(minSdk 23) | | iOS App | ✅(min iOS 14) | | Harmony App | ✅(API 12+) | ### 截图建议(4–6 张) 1. 权限演示页截图(三端权限列表与状态) 2. Promise 封装调用代码示例 3. Android 系统权限弹窗(相机 / 蓝牙) 4. iOS 隐私授权弹窗 5. manifest.json 权限配置示例 6. 三端权限支持对照表 --- ## 市场 FAQ 预填 **Q:为什么必须自定义基座?** A:本插件为 UTS 原生插件,标准基座不包含。需制作含本插件的自定义基座或云打包。 **Q:H5 能用吗?** A:不支持。仅 App 端(Android / iOS / Harmony)。 **Q:安装插件后还需要配置权限吗?** A:需要。Android / iOS 必须在宿主 `manifest.json` 中声明静态权限与隐私说明;鸿蒙由插件 `module.json5` 合并,但 ACL 权限需额外签名。详见《权限配置说明.md》。 **Q:三端权限 Key 一样吗?** A:统一使用 `camera`、`microphone`、`location`、`bluetooth` 等 Key,插件内部映射到各平台原生权限。部分 Key 仅 Android 支持(如 `overlay`、`sms`),调用时会返回 `unsupported`。 **Q:iOS 蓝牙在 App 设置里找不到?** A:需在 manifest 配置 `NSBluetoothAlwaysUsageDescription` 并重新打包,且 App 需曾触发蓝牙权限弹窗。若 App 设置页无该项,请前往「设置 → 隐私与安全性 → 蓝牙」。系统蓝牙开关在「设置 → 蓝牙」,与应用授权无关。 **Q:鸿蒙相册权限申请失败?** A:默认 `module.json5` 仅含 5 项 normal 权限,未声明相册读写。相册选图推荐 `uni.chooseImage`;若必须申请媒体权限,需用 `module.full.json5` 覆盖并配置 ACL 签名。 **Q:用户永久拒绝后怎么办?** A:调用 `openPermissionSettings(permissionKey)` 跳转对应系统设置页,配合 `getPermissionSettingsGuide()` 展示引导文案。 --- ## 版本号规范 遵循 [语义化版本](https://semver.org/lang/zh-CN/): | 变更类型 | 版本 bump | 示例 | | --- | --- | --- | | 不兼容 API 变更 | major | 2.0.0 | | 新增功能(兼容) | minor | 1.1.0 | | Bug 修复 | patch | 1.0.1 | 每次发版同步更新 `package.json` → `version` 和 `changelog.md`。 --- ## 联系方式 发布前请在 `package.json` → `dcloudext.contact.qq` 填写维护者 QQ,或在插件市场后台配置联系方式。 --- ## 参考链接 - [UTS 插件开发文档](https://uniapp.dcloud.net.cn/plugin/uts-plugin.html) - [插件市场发布流程](https://uniapp.dcloud.net.cn/plugin/publish.html) - 插件内 [readme.md](./readme.md) - 插件内 [使用规范.md](./使用规范.md) - 插件内 [权限配置说明.md](./权限配置说明.md)