电容器-生物计量-原子 
此插件用于 电容 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.
- 在 Xcode 中, 打开您的应用程序
Info.plist文档. - 将鼠标粘贴在已有的密钥上,然后单击
+按钮. - 在出现的弹出中,类型
Privacy - Face ID Usage Description并按 Enter 键. - 在"值"一栏中,输入一个字符串来描述为什么您的应用程序需要访问Face ID.
- 保存您的更改.
使用量
互联网档案馆的存檔,存档日期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 密码
checkBiometry()setBiometryType(...)setBiometryIsEnrolled(...)setDeviceIsSecure(...)authenticate(...)addResumeListener(...)- 接口
- 类型异名
- 数字
这是插件的公开界面 .
检查边距( 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() 将仅呈现强的生物测量. |