@aparajita/capacitor-biometric-auth

中文文档
10.0.0发布于 2026/02/10MITTypeScriptESM + CJS近 30 天下载 122万

为Capacitor 7+应用提供对本地生物鉴别认证和装置安全API的存取

中文使用文档
文档目录19 节
  1. 安装
  2. iOS系统
  3. 使用量
  4. 检查可用性
  5. 认证
  6. 生物计量支持
  7. 网络
  8. iOS系统
  9. 机器人
  10. API 密码
  11. 检查边距( C)
  12. 设置比对Type(...)
  13. 设定生物计量仪已录入(...)
  14. 设置Device Issecure (...)
  15. 认证(...)
  16. 添加ResumeListener(...)
  17. 接口
  18. 类型异名
  19. 数字

电容器-生物计量-原子  npm version

此插件用于 电容 8 提供对iOS和Android的本土生物测量和装置证书的访问. 它支持两种平台上的每一种生物测量和每一种配置选项. 此外,网络上还模拟了生物测量和装置的资质,这样就可以测试你的逻辑,而无需对代码作任何修改.

🛑 打破变化:

  • 如果您要从9. 0. 0 前的版本升级,请注意此插件现在需要 Capacitor 8+.

  • 如果您在8.0.0之前从版本升级,请注意: addResumeListener 现在总是返回一个承诺,必须等待.

  • 如果您在7.0.0之前从版本升级,请注意: authenticate() 将 马上 如果 deviceIsSecure 没错, allowDeviceCredentials 不存在所要求的强度的生物测量.

  • 如果您在6. 0. 0 之前从版本升级,请注意: authenticate() 现在抛出一个实例 BiometryError,以及 BiometryError.code 现在输入为 BiometryErrorType。 。 。 .

安装

pnpm add @aparajita/capacitor-biometric-auth
npm install @aparajita/capacitor-biometric-auth
yarn add @aparajita/capacitor-biometric-auth

没有使用 小时你欠它自己 一个尝试。 更快速、更适合单簧管 就是这样,就是这样 磁盘空间比其它选项少.

iOS系统

此插件可以通过 Swift 套件管理器( SPM) 或 CocoaPods 安装 :

  • Swift 软件包管理器( 建议): 无需额外步骤。 电容7+自动使用SPM.
  • 可可花属(学名:Cocoapods)是禾本科下的一个属,为乔木植物 仍然完全支持。 该插件将与基于CocoaPods的现有项目合作.

👉 关键! 要使用 Face ID,必须添加 NSFaceIDUsageDescription 键 Info.plist 文档。 此字符串描述为什么您的应用程序需要访问 Face ID 。 如果不添加此密钥,系统将不允许您的应用程序使用Face ID.

  1. 在 Xcode 中, 打开您的应用程序 Info.plist 文档.
  2. 将鼠标粘贴在已有的密钥上,然后单击 + 按钮.
  3. 在出现的弹出中,类型 Privacy - Face ID Usage Description 并按 Enter 键.
  4. 在"值"一栏中,输入一个字符串来描述为什么您的应用程序需要访问Face ID.
  5. 保存您的更改.

使用量

互联网档案馆的存檔,存档日期2008-12-02 类型脚本定义文件。还有(有些是不完整的)自动生成的文件 下级。关于在实践中如何使用此插件的完整实例,请参见演示应用程序: 可可Pods变种 或者说 SPM 变体。 。 。 .

检查可用性

虽然并非绝对必要,但在给用户提供使用生物计量方法的选择(例如显示生物计量图标)之前,您可能想要调用 checkBiometry() 并检查 CheckBiometryResult 以查看设备上有哪些(如果有)生物测量和(或)设备证书。 说明如下:

  • isAvailable 也许 false 不过 biometryType 可能表明在装置上存在生物测量。 如果:

    • 目前用户没有注册生物计量.
    • 目前应用的生物计量已被禁用.
    • 在Android上,存在生物鉴别硬件,但只能用于 设备 解锁, 没有 使用应用程序 安卓笔记 详情见下文.

    在这种情况下 reason 财务报告和审定财务报表 code 我会告诉你原因的.

  • 在iOS上, isAvailable 财务报告和审定财务报表 strongBiometryIsAvailable 将永远具有同样的价值,因为传统上,这是生物测量的全部点——它应该是强有力的认证.

  • 不幸的是,Android支持“强”生物计量(通常是指纹)和“弱”生物计量(通常是面相/里相). isAvailable 将会是 true 若为 任意 生物测量类型实际上可供应用软件使用,但 strongBiometryIsAvailable 将会是 true 只有在有强的生物测量方法的情况下 例如,在一个典型的设备上,如果它有指纹和面部解锁的硬件支持,并且两者都可以被应用软件使用, isAvailable 将会是 true 如果其中之一被录取,但 strongBiometryIsAvailable 将会是 true 只有在指纹认证注册的情况下.

* *Android 注释

在生物测量方面,Android坦率地说有点乱. 有些设备可能只为设备解锁而支持“微弱”生物计量(例如面部解锁),而不是通过应用软件。 但系统向这个插件报告 全部 生物鉴别硬件的类型,即使它们不能被应用软件使用.

因此,在Android上,你唯一可以依靠的是 isAvailable 财务报告和审定财务报表 strongBiometryAvailable 属性为简单打开/关闭开关。 不依赖 biometryType 财务报告和审定财务报表 biometryTypes 以表示你能够实际使用什么生物测量.

处理应用程序恢复

因为生物测量的可用性会随着应用的背景而改变,所以在恢复应用时检查可用性很重要. 打电话 addResumeListener() 您可以注册一个通过过的回调 CheckBiometryResult 当你的应用程序恢复.

示例

import { CheckBiometryResult } from './definitions'

let appListener: PluginListenerHandle

function updateBiometryInfo(info: CheckBiometryResult): void {
  if (info.isAvailable) {
    // Biometry is available, info.biometryType will tell you the primary type.
  } else {
    // Biometry is not available, info.reason and info.code will tell you why.
  }
}

async function onComponentMounted(): Promise<void> {
  updateBiometryInfo(await BiometricAuth.checkBiometry())

  try {
    appListener = await BiometricAuth.addResumeListener(updateBiometryInfo)
  } catch (error) {
    if (error instanceof Error) {
      console.error(error.message)
    }
  }
}

async function onComponentUnmounted(): Promise<void> {
  await appListener?.remove()
}

认证

启动生物鉴别认证呼叫 authenticate()。 。 。 . authenticate 需要一个 AuthenticateOptions 用于控制生物鉴别提示的行为和外观.

如果认证成功,承诺就会解决. 如果认证失败, 承诺将被拒绝, 例如 BiometryError,它有两个属性:

财产类型说明
消息字符串描述适合调试的错误
代码生物测量错误Type出错的原因

示例

import {
  AndroidBiometryStrength,
  BiometryError,
  BiometryErrorType,
} from './definitions'

async function authenticate(): Promise<void> {
  try {
    await BiometricAuth.authenticate({
      reason: 'Please authenticate',
      cancelTitle: 'Cancel',
      allowDeviceCredential: true,
      iosFallbackTitle: 'Use passcode',
      androidTitle: 'Biometric login',
      androidSubtitle: 'Log in using biometric authentication',
      androidConfirmationRequired: false,
      androidBiometryStrength: AndroidBiometryStrength.weak,
    })
  } catch (error) {
    // error is always an instance of BiometryError.
    if (error instanceof BiometryError) {
      if (error.code !== BiometryErrorType.userCancel) {
        // Display the error.
        await showAlert(error.message)
      }
    }
  }
}

生物计量支持

网络

在网络上,您可以通过调用来伪造任何支持的生物测量类型 setBiometryType()。 。 。 .

iOS系统

在iOS上,可支持触摸ID和FaceID.

机器人

在Android上,指纹,相貌,和虹膜认证都得到了支持. 注意,如果一个设备支持一种以上类型的生物测量,插件将首先呈现出主(最安全的)可用类型,该类型由系统决定,无法在程序上确定.

如上所述,Android可能支持多类生物测量,但并非所有生物测量都可用于应用. 例如,一个设备可能同时支持指纹和面相认证,但可能只有指纹认证可供应用程序使用. 在这种情况下,如果用户只注册了面对面的认证, checkBiometry() 将显示没有生物计量.

API 密码

这是插件的公开界面 .

检查边距( C)

checkBiometry() => Promise<CheckBiometryResult>

检查可选取的生物测量类型( 如果有的话) .

回返情况: 承诺 <检查测量结果> 翻译:


设置比对Type(...)

setBiometryType(type: BiometryType | string | Array<BiometryType | string> | undefined) => Promise<void>

仅网络

在网络上,这种方法允许你动态地模拟不同类型的生物测量. 你也可以通过 BiometryType 谜题或字符串名称 BiometryType um. 如果未定义或一个字符串被传递,而且它不是一个有效的值,则什么也不会发生.

参数类型
类型字符串% 1 生物测量主题 |(弦) 生物测量主题[

设定生物计量仪已录入(...)

setBiometryIsEnrolled(isSecure: boolean) => Promise<void>

仅网络

在网络上,这种方法允许您动态模拟用户是否已经注册了生物测量学.

参数类型
安全性布尔

设置Device Issecure (...)

setDeviceIsSecure(isSecure: boolean) => Promise<void>

仅网络

在网络上,这种方法允许您动态地模拟用户是否用PIN,图案或密码来保护设备.

参数类型
安全性布尔

认证(...)

authenticate(options?: AuthenticateOptions) => Promise<void>

提示用户认证 。 如果由于任何原因授权失败,承诺将被拒绝 BiometryError。 。 。 .

关于iOS上的行为详情,参见:

https://developer.apple.com/documentation/localautentication/lapolicy/devicegroupersautentication 与生物计量学

一些版本的Android对失败的尝试次数施加了限制. 若为 allowDeviceCredential 实值 true,当限制到达时,用户将获得设备证书提示。 若为 allowDeviceCredential 实值 false,当达到极限时 authenticate() 将否认 BiometryErrorType 联 合 国 biometryLockout,之后用户必须等待系统定义的时间长度才能被允许再次认证.

参数类型
选项认证选项

添加ResumeListener(...)

addResumeListener(listener: ResumeListener) => Promise<PluginListenerHandle>

注册应用程序恢复时将调用的函数 。 该函数将传递于 checkBiometry()。 。 。 .

👉 注: checkBiometh () 在调用此方法之前必须至少调用一次 .

参数类型
监听器继续收听器

回返情况: 承诺 <插件听筒> 翻译:


接口

检查测量结果

财产类型说明
可更改布尔如果设备支持 True 起码 生物鉴别认证薄弱 通过应用程序 并且目前的用户已经以某种生物计量方式注册。 注意,如果 strongBiometryIsAvailable 是真的,这也是真的.
强比度测量布尔如果该装置具有很强的生物鉴别认证能力,而目前的用户已经注册了这个很强的生物测量方法,那就是真的了.

在 iOS 上,该值和 isAvailable 因为iOS只支持强大的生物测量.

例如在Android上,如果设备同时支持指纹和由应用软件进行面相认证,用户只注册了面相认证,而Android则认为该设备上的脸相认证很弱,那么 isAvailable 将会是真实的,但这个值是虚假的.
生物测量图生物测量主题由设备支撑的主要(最安全的)生物测量类型. 请注意: 支持 与 可用,这需要生物测量学的注册.
生物计量类型生物测量类型 []由设备上的硬件支撑的所有生物测量类型, 它是否实际可供应用程序使用。如果不支持生物测量,即:. biometryType === <a href="#biometrytype">BiometryType.none中,这将是一个空阵列.

请注意: 支持 与 可用,这需要生物测量学的注册.
设备安全布尔如果设备安全, 返回真实值 。 在iOS上,这意味着设备有密码集. 在Android上,这意味着设备有PIN,图案,或密码集.
原因字符串如果没有较弱或较佳的生物测量方法,而且系统给出了一个理由,它就会在这里被退回. 否则取一空弦.
代码生物测量错误Type如果没有弱或更好的生物测量,错误代码将在此被还原. 否则取一空弦. 错误代码将是 BiometryErrorType enum值,并在各个平台之间保持一致.
强力Reason字符串如果无法使用强的生物测量,并且系统给出一个原因,它会在这里被退回. 否则取一空弦.

在iOS上,这永远和 reasoniOS上所有的生物测量都非常强壮.
强码生物测量错误Type如果没有强的生物测量方法,错误代码会在这里被返回. 否则取一空弦. 错误代码将是 BiometryErrorType enum值,并在各个平台之间保持一致.

在iOS上,这永远和 codeiOS上所有的生物测量都非常强壮.

认证选项

Prop类型说明
原因字符串在提交用户的认证对话框中显示请求认证的理由.

默认: 系统默认
取消标题字符串iOS:系统在生物鉴别认证时呈现一个取消按钮,让用户中止认证尝试. 按钮每次系统要求用户出示用触摸ID注册的指头时都会出现. 对于Face ID,按钮只有在认证失败并促使用户再次尝试时才会出现. 无论如何,用户都可以停止尝试通过按下按钮来认证.

Android:负按钮的文本. 这通常会被作为"取消"按钮使用,但也可能被用来显示另一种认证方法,例如屏幕请求备份密码.

默认: “取消”
允许证书布尔如果真实,允许使用设备解锁证书进行认证.

默认:虚假.

iOS:如果有生物测量,注册,而不被禁用,系统首先使用. 在第一次触摸ID失败或第二次FaceID失败之后,如果 iosFallbackTitle 不是一个空字符串, 在认证对话框中会出现倒置按钮 。 如果用户点击倒扣,系统会提示用户获取设备密码或用户密码. 若为 iosFallbackTitle 是一个空字符串,不会出现后退按钮.

如果未录入和启用生物计量,且设置了密码,系统会立即提示用户获取设备密码或用户密码. 错误代码认证失败 passcodeNotSet 如果设备密码没有启用 .

如果设备上没有设置密码, a passcodeNotSet 返回错误.

系统在6次尝试失败后会禁用密码认证,并逐渐增加尝试之间的延迟.

后退按钮的标题可以通过设置来定制 iosFallbackTitle 到非空字符串.

Android:用户将首先被提示使用生物鉴别技术进行认证,但也获得了通过在认证对话框中按下按钮来使用其设备PIN,图案或密码进行认证的选择. 按钮的标题由系统提供.
欧斯法尔回扣字符串系统在生物鉴别认证失败时会呈现出后退按钮——例如,由于系统无法识别所呈现的指头,或者在多次试图识别用户面孔失败后.

若为 allowDeviceCredential 错误, 点击此按钮会删除认证对话框并返回错误代码用户Fallback 。 如果未定义,则使用本地化系统默认标题. 通过空字符串可以完全隐藏倒扣.

若为 allowDeviceCredential 真实且未定义,使用本地化系统默认标题.
机器人标题字符串Android 对话框的标题 。 如果不提供,则使用系统默认值.
机器人字幕字符串Android 对话框的子标题 。 如果不提供,则使用系统默认值.
需要确认布尔确定是否必须确认生物鉴别能力薄弱的成功.

有关此设置的信息,见https://developer.android.com/reference/android/hardware/biometrics/BiometricPrompt.Builder#set Confirmation Required(boolean).

默认 : true
等离子体结构Android 生物测量结构设定将被接受的Android生物鉴别认证的强度.

👉 注: 在Android 9 & 10(API 28-29)上,这实际上永远是 .weak 若为 allowDeviceCredential 这是真的。 这是Android API的已知限制

默认 : AndroidBiometryStrength.weak

插件听筒

方法签署
删除(.) 承诺<有效>

类型异名

继续收听器

召回的签名 addResumeListener()。 。 。 .

(info: CheckBiometryResult): void

数字

生物测量主题

成员说明
无
触摸仪iOS 触摸标识
相册iOS 面部标识
指纹认证Android 指纹认证
面相校正Android 面部认证
虹膜校正Android 虹膜认证

生物测量错误Type

成员数值
无''
应用程序取消"请求放弃"
认证 失败认证 失败
无效的语句"无效的语句"
非交互"不互动"
密码不设置密码不放
系统取消"系统取消"
用户取消"用户取消"
用户 Fallback"用户 Fallback" (回转)
生物测量Lockout"生物测量Lockout"
生物测量不易破坏"生物测量不易破坏"
未注册"生物测量学没有注册"
无证书"没有证据"

Android 生物测量结构

成员说明
弱项authenticate() 将介绍任何可用的生物测量.
强authenticate() 将仅呈现强的生物测量.

版本与发布记录

@aparajita/capacitor-biometric-auth 共发布 47 个版本,首次发布于 2021/03/30;过去 12 个月发布了 1 个版本。

版本发布日期距今
10.0.0latest2026/02/108 个月前
9.1.22025/10/251 年前
9.1.12025/10/241 年前
9.1.02025/10/241 年前
9.0.02025/04/251.5 年前
8.0.22024/07/182 年前

关于 @aparajita/capacitor-biometric-auth 的常见问题

@aparajita/capacitor-biometric-auth 是什么?

为Capacitor 7+应用提供对本地生物鉴别认证和装置安全API的存取

如何安装 @aparajita/capacitor-biometric-auth?

在项目目录运行 npm install @aparajita/capacitor-biometric-auth,或使用 pnpm add / yarn add / bun add。

@aparajita/capacitor-biometric-auth 支持 TypeScript 吗?

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

@aparajita/capacitor-biometric-auth 支持 ESM 还是 CommonJS?

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

@aparajita/capacitor-biometric-auth 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aparajita/capacitor-biometric-auth 可以商用吗?

@aparajita/capacitor-biometric-auth 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@aparajita/capacitor-biometric-auth 的下载量有多少?

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

@aparajita/capacitor-biometric-auth 还在维护吗?

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