@capgo/capacitor-permissions

中文文档
8.2.8发布于 2026/10/15MPL-2.0TypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 4万

用于检查和请求应用权限的电容插件.

中文使用文档
文档目录22 节
  1. *免费开始*
  2. 特征
  3. 使用大小写
  4. 文档
  5. 兼容性
  6. 安装
  7. iOS 设置
  8. 机器人设置
  9. 网络设置
  10. 使用量
  11. 示例应用程序
  12. API 密码
  13. 检查(...)
  14. 请求(...)
  15. 检查复数(...)
  16. 请求复数(...)
  17. 应显示理由(...)
  18. 打开设置(...)
  19. 预览( )
  20. 获取 PluginVersion ()
  21. 接口
  22. 类型异名

@ capgo/ 电容- 许可

Capgo - Build Capacitor apps with AI, ship updates instantly

队长:在几分钟内将修正推给您的 Capacitor 用户,在没有Mac的情况下构建已签名的iOS和Android apps,并在一击中回滚.

*免费开始*

14天无限自由审判. 不需要信用卡

🤖 建筑与AI编码代理? 安装 Capgo 技能 所以克劳德代码,代码,光标,副驾驶,或双子座CLI知道如何安装和使用 @capgo/capacitor-permissions 在您的电容应用程序中: npx skills add Cap-go/capgo-skills。然后问你的经纪人: 添加@capgo/capor-permissions到我的 Capacitor app 并把它连接起来。" 代理设置指南 • 妇女 主机磁共振

@ capgo/ 电容- 许可 给予Capacitor Apps一个TypeScript API,以检查和请求iOS,Android,和web上的运行时间权限. 与其单独布线每个特性插件或猜测平台特定状态代码,不如使用单一的一组权限名称和规范状态(granted, (中文(简体) ), denied, (中文(简体) ), blocked, (中文(简体) ), limited, (中文(简体) ), unavailable) (中文(简体) ). 本地运单保持倾斜: 插件船没有 uses-permission 条目或强制的Info.plist字符串,所以存储审查只查看您的应用程序声明的内容.

特征

  • 一个 PermissionName 用于相机、位置、通知、媒体、联系人和更多跨平台的信息
  • check, (中文(简体) ), request, (中文(简体) ), checkMultiple,以及 requestMultiple 与共享 AppPermissionState 结果
  • 机器人 shouldShowRationale 拒绝后重发警告
  • openSettings 当访问被屏蔽时用于应用程序或通知设置
  • requestPreciseLocation iOS和 ACCESS_FINE_LOCATION 安卓号
  • 通过浏览器实现所支持类型的 Web 执行权限 API
  • 可选 scripts/apply-permissions.mjs 只添加您需要的 Android 和 iOS 声明

使用大小写

  • 在允许相机或麦克风访问之前打开屏幕
  • 运行启动审计 checkMultiple 并显示缺失权限的单个登机流程
  • 状态时将用户发送到系统设置 blocked 之后 openSettings
  • 在登记出推码前请求通知许可
  • 当地图特性需要时, 由缩小位置升级到精确位置

文档

Android emulator showing the camera permission dialog Example app reporting camera permission as granted

兼容性

插件版本电容兼容性维护
联合国联合国✅
页:1页:1应要求
页:1页:1应要求

政策:

  • 新的插件从版本开始 8.0.0 (8号电站基线).
  • 对更古老的Capacitor主机的后向相容性按需支持.

安装

npm install @capgo/capacitor-permissions
npx cap sync

与 Bun 键 :

bun add @capgo/capacitor-permissions
bunx cap sync

iOS 设置

该插件不会在您的应用程序中注入使用描述 。 每笔 PermissionName 您在运行时调用, 将匹配的密钥添加到 ios/App/App/Info.plist (定制用户界面字符串):

权限Info.plist 密钥
cameraNSCameraUsageDescription
microphoneNSMicrophoneUsageDescription
photoLibraryNSPhotoLibraryUsageDescription
photoLibraryAddOnlyNSPhotoLibraryAddUsageDescription
contactsNSContactsUsageDescription
calendarNSCalendarsUsageDescription, (中文(简体) ), NSCalendarsFullAccessUsageDescription
remindersNSRemindersUsageDescription, (中文(简体) ), NSRemindersFullAccessUsageDescription
locationWhenInUseNSLocationWhenInUseUsageDescription
locationAlwaysNSLocationWhenInUseUsageDescription, (中文(简体) ), NSLocationAlwaysAndWhenInUseUsageDescription
bluetoothNSBluetoothAlwaysUsageDescription
motionNSMotionUsageDescription
speechRecognitionNSSpeechRecognitionUsageDescription, (中文(简体) ), NSMicrophoneUsageDescription
appTrackingTransparencyNSUserTrackingUsageDescription

notifications iOS上使用系统通知许可流;API本身不需要额外的使用字符串. 权限, 如 activityRecognition, (中文(简体) ), phone, (中文(简体) ), sms,而Android风格的媒体分割不适用于iOS和报告 unavailable 检查时.

您可以从插件 Repo 自动应用上面的密钥 :

node node_modules/@capgo/capacitor-permissions/scripts/apply-permissions.mjs \
  --project . \
  --permissions camera,microphone,notifications,locationWhenInUse,photoLibrary

(点 --project 在您的 Capacitor 应用程序根, 包含 ios/ 财务报告和审定财务报表 android/. ) (中文(简体) )

机器人设置

图书馆 AndroidManifest.xml 声明 没有 <uses-permission> 条目。 只添加您的应用程序的用途 android/app/src/main/AndroidManifest.xml。插件目标 分数 24 (Android 7.0) 除非你的项目超过 minSdkVersion。 。 。 .

权限典型 uses-permission 名称
cameraandroid.permission.CAMERA
microphone, (中文(简体) ), speechRecognitionandroid.permission.RECORD_AUDIO
photoLibrary, (中文(简体) ), mediaImagesREAD_MEDIA_IMAGES, (中文(简体) ), READ_MEDIA_VISUAL_USER_SELECTED, (中文(简体) ), READ_EXTERNAL_STORAGE (遗产)
photoLibraryAddOnlyWRITE_EXTERNAL_STORAGE (遗产)
contactsREAD_CONTACTS
calendarREAD_CALENDAR, (中文(简体) ), WRITE_CALENDAR
locationWhenInUseACCESS_COARSE_LOCATION, (中文(简体) ), ACCESS_FINE_LOCATION
locationAlways上加号数 ACCESS_BACKGROUND_LOCATION
bluetoothBLUETOOTH, (中文(简体) ), BLUETOOTH_ADMIN, (中文(简体) ), BLUETOOTH_CONNECT, (中文(简体) ), BLUETOOTH_SCAN
motion, (中文(简体) ), activityRecognitionACTIVITY_RECOGNITION
notificationsPOST_NOTIFICATIONS (Android 13+) (韩语)
phoneREAD_PHONE_STATE
smsREAD_SMS, (中文(简体) ), RECEIVE_SMS
mediaAudioREAD_MEDIA_AUDIO, (中文(简体) ), READ_EXTERNAL_STORAGE
mediaVideoREAD_MEDIA_VIDEO, (中文(简体) ), READ_EXTERNAL_STORAGE

reminders 财务报告和审定财务报表 appTrackingTransparency 在此 API 中不是 Android 运行时间权限并返回 unavailable。 。 。 .

用同样的 apply-permissions.mjs 脚本 as on iOS 将声明合并到您的应用程序列表中 .

网络设置

无明显变化。 支持的权限使用 navigator.permissions 及相关的API(camera, (中文(简体) ), microphone, (中文(简体) ), notifications, (中文(简体) ), locationWhenInUse· ; locationAlways 仅用于前景地理定位的地图。 其他人员返回 unavailable。 。 。 . openSettings 未在网上执行.

使用量

import { Permissions } from '@capgo/capacitor-permissions';

export async function ensureCamera(): Promise<boolean> {
  const { status } = await Permissions.check({ permission: 'camera' });
  if (status === 'granted') {
    return true;
  }
  const { status: afterRequest } = await Permissions.request({ permission: 'camera' });
  return afterRequest === 'granted';
}

在显示登入屏幕前检查多个权限 :

const { statuses } = await Permissions.checkMultiple({
  permissions: ['camera', 'microphone', 'notifications'],
});
const missing = Object.entries(statuses).filter(([, s]) => s !== 'granted');

Android 报告时 denied,在再次请求前显示上下文:

const { shouldShow } = await Permissions.shouldShowRationale({ permission: 'camera' });
if (shouldShow) {
  // Show your own explanation UI, then:
  await Permissions.request({ permission: 'camera' });
}

如果状态是 blocked,将用户发送到设置 :

await Permissions.openSettings({ type: 'application' });

示例应用程序

这个 example-app/ 项目练习 PermissionName应用声明,同步本地项目,然后:

cd example-app
bun install
bun run start

API 密码

Capacitor apps的跨平台权限 API.

检查(...)

check(options: PermissionOptions) => Promise<PermissionStatusResult>

检查一个权限的当前状态而不提示用户 .

参数类型
optionsPermissionOptions

回返情况: Promise<PermissionStatusResult>

自: 8.0.0 (单位:千美元)


请求(...)

request(options: PermissionOptions) => Promise<PermissionStatusResult>

请求用户允许 。 在Android上,在需要时显示系统对话框. 在iOS上,触发了被映射能力的平台授权流.

参数类型
optionsPermissionOptions

回返情况: Promise<PermissionStatusResult>

自: 8.0.0 (单位:千美元)


检查复数(...)

checkMultiple(options: MultiplePermissionOptions) => Promise<MultiplePermissionStatusResult>

检查多个权限而不提示 .

参数类型
optionsMultiplePermissionOptions

回返情况: Promise<MultiplePermissionStatusResult>

自: 8.0.0 (单位:千美元)


请求复数(...)

requestMultiple(options: MultiplePermissionOptions) => Promise<MultiplePermissionStatusResult>

依次请求多个权限, 因此对话框不会在相上方显示 .

参数类型
optionsMultiplePermissionOptions

回返情况: Promise<MultiplePermissionStatusResult>

自: 8.0.0 (单位:千美元)


应显示理由(...)

shouldShowRationale(options: PermissionOptions) => Promise<ShouldShowRationaleResult>

Android在再次请求之前是否应该显示一个理由. 回返 { shouldShow: false } 在iOS和网络.

参数类型
optionsPermissionOptions

回返情况: Promise<ShouldShowRationaleResult>

自: 8.0.0 (单位:千美元)


打开设置(...)

openSettings(options?: OpenSettingsOptions | undefined) => Promise<void>

打开应用程序或通知设置屏幕. 在网络上拒绝 UNIMPLEMENTED。 。 。 .

参数类型
optionsOpenSettingsOptions

自: 8.0.0 (单位:千美元)


预览( )

requestPreciseLocation() => Promise<PermissionStatusResult>

问确切位置. 在iOS上,当在使用时已经得到授权时,请求临时完全准确. Android上的请求 ACCESS_FINE_LOCATION。 。 。 . 网络上,在可能时提示后返回地理定位权限状态 .

回返情况: Promise<PermissionStatusResult>

自: 8.0.0 (单位:千美元)


获取 PluginVersion ()

getPluginVersion() => Promise<PluginVersionResult>

返回平台执行版本标记 .

回返情况: Promise<PluginVersionResult>

自: 8.0.0 (单位:千美元)


接口

权限状态

实现单一许可状态.

Prop类型说明自兹
statusAppPermissionState请求许可的现状 .8.0.0 (单位:千美元)

权限选项

检查或请求单一许可的选项 .

Prop类型说明自兹
permissionPermissionName评估或请求的逻辑权限 .8.0.0 (单位:千美元)

多重任务状态

多个许可状态的结果 .

Prop类型说明自兹
statusesRecord<string, AppPermissionState>权限名称地图到状态 。 密钥符合传入的名称 permissions。 。 。 .8.0.0 (单位:千美元)

多选项

检查或请求多个权限的选项 .

Prop类型说明自兹
permissionsPermissionName[]允许按顺序评估 。 打开 requestMultiple,每个许可都是一个接一个请求.8.0.0 (单位:千美元)

应显示理由

Android原理检查的结果.

Prop类型说明自兹
shouldShowboolean只有当Android在再次请求前显示一个原理对话框时才是正确的. 总是在iOS和网络上作假.8.0.0 (单位:千美元)

打开设置选项

打开系统设置的选项 .

Prop类型说明默认自兹
typeSettingsType要打开的设置屏幕 .'application'8.0.0 (单位:千美元)

插件变压器

插件版本有效载荷 .

Prop类型说明自兹
versionstring平台执行返回的版本标识符(native 移动, web 在浏览器中).8.0.0 (单位:千美元)

类型异名

Apppermission 状态

每个平台执行返回的规范化许可状态 .

  • granted:用户允许完全访问.
  • denied:用户尚未准许访问,或者Android可以显示一个理由.
  • blocked:用户拒绝访问,没有设置应用程序就无法再次提示.
  • limited: 部分访问(例如iOS有限相片库或降低位置精确度).
  • unavailable:该权限不在此平台上支持,或未在app express中声明.

'granted' | 'denied' | 'blocked' | 'limited' | 'unavailable'

权限Name

逻辑权限标识符通过iOS,Android,和Web共享.

仅限机器人名称包括 activityRecognition, (中文(简体) ), phone, (中文(简体) ), sms, (中文(简体) ), mediaAudio, (中文(简体) ), mediaImages,以及 mediaVideo。 。 。 . 只有iOS 名称包含 reminders 财务报告和审定财务报表 appTrackingTransparency。 。 。 . Web 通过浏览器API支持子集(camera, (中文(简体) ), microphone, (中文(简体) ), notifications, (中文(简体) ), locationWhenInUse) (中文(简体) ). 网上, locationAlways 仅是前地地理定位的同名;浏览器不显示背景位置权限.

'camera' | 'microphone' | 'photoLibrary' | 'photoLibraryAddOnly' | 'contacts' | 'calendar' | 'reminders' | 'locationWhenInUse' | 'locationAlways' | 'bluetooth' | 'motion' | 'notifications' | 'speechRecognition' | 'appTrackingTransparency' | 'activityRecognition' | 'phone' | 'sms' | 'mediaAudio' | 'mediaImages' | 'mediaVideo'

记录

构造 T 类型 K 的一组属性类型

{ [P in K]: T; }

设置类型

设置屏幕类型 openSettings。 。 。 .

'application' | 'notifications'

版本与发布记录

@capgo/capacitor-permissions 共发布 9 个版本,首次发布于 2026/10/01;过去 12 个月发布了 9 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
8.2.8latest2026/10/1525 天前
8.2.72026/10/1327 天前
8.2.62026/10/091 个月前
8.2.52026/10/081 个月前
8.2.42026/10/081 个月前
8.2.32026/10/011 个月前

关于 @capgo/capacitor-permissions 的常见问题

@capgo/capacitor-permissions 是什么?

用于检查和请求应用权限的电容插件.

如何安装 @capgo/capacitor-permissions?

在项目目录运行 npm install @capgo/capacitor-permissions,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@capacitor/core(>=8.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@capgo/capacitor-permissions 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@capgo/capacitor-permissions 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@capgo/capacitor-permissions 可以商用吗?

@capgo/capacitor-permissions 使用 MPL-2.0 许可。弱 Copyleft:可以商用,也可以和闭源代码一起使用;但如果分发时修改了 MPL 授权的文件,这些文件的修改需以 MPL 开源。以上为概括,不构成法律意见,请以许可原文为准。

@capgo/capacitor-permissions 的下载量有多少?

根据 npm 官方下载统计,@capgo/capacitor-permissions 在 2026/10/09 – 2026/11/07 这 30 天内被下载 39,796 次,日均约 1,327 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@capgo/capacitor-permissions 还在维护吗?

最新版本 8.2.8 发布于 2026/10/15(25 天前);至今共发布 9 个版本,其中过去 12 个月发布了 9 个;首次发布于 2026/10/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。