Erste Schritte
Kopiere einen Setup-Prompt mit den Installationsschritten und dem vollständigen Markdown-Guide für dieses Plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-native-biometric`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/native-biometric/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Installieren
Abschnitt „Installation“Du kannst unser KI-gestütztes Setup nutzen, um das Plugin zu installieren. Füge die Capgo Skills mit dem folgenden Befehl deinem KI-Tool hinzu:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsNutze dann diesen Prompt:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-native-biometric` plugin in my project.Wenn du ein manuelles Setup bevorzugst, installiere das Plugin mit den folgenden Befehlen und befolge die plattformspezifischen Anweisungen unten:
bun add @capgo/capacitor-native-biometricbunx cap syncImportieren
Abschnitt mit dem Titel „Import“import { NativeBiometric } from '@capgo/capacitor-native-biometric';Quickstart: Login mit Biometrie absichern
Abschnitt: „Quick start: Login mit Biometrie absichern“import { NativeBiometric } from '@capgo/capacitor-native-biometric';
async function biometricLogin() { const { isAvailable } = await NativeBiometric.isAvailable(); if (!isAvailable) { return fallbackToPasscode(); }
try { const { username, password } = await NativeBiometric.getSecureCredentials({ server: 'https://api.example.com', }); await signIn(username, password); } catch { return fallbackToPasscode(); }}Speichere Secrets zuerst mit setCredentials und accessControl wenn du beim Auslesen biometrischen Schutz benötigst.
Beispiel: Entsperren mit verifyIdentity
Abschnitt mit dem Titel „Beispiel: Entsperren mit verifyIdentity“getSecureCredentials() fragt bereits nach, wenn Anmeldedaten biometrisch sind accessControl. Nutze verifyIdentity() für andere geschützte Aktionen und leite Abbruch oder Sperrung an deinen Passcode-Flow weiter.
try { await NativeBiometric.verifyIdentity({ reason: 'Unlock your account', title: 'Biometric login', });} catch { return fallbackToPasscode();}Beispiel: Logout löscht den Vault-Eintrag
Abschnitt mit dem Titel „Beispiel: Logout löscht den Vault-Eintrag“await NativeBiometric.deleteCredentials({ server: 'https://api.example.com' });Beispiel: Reagieren auf Änderungen der Biometrie-Registrierung
Abschnitt mit dem Titel „Beispiel: Reagieren auf Änderungen der Biometrie-Registrierung“await NativeBiometric.addListener('biometryChange', async () => { const { isAvailable } = await NativeBiometric.isAvailable(); if (!isAvailable) showPasscodeUi();});Häufige Stolperfallen
Abschnitt „Häufige Fallstricke“getSecureCredentialserfordert vorabaccessControl: beim Speichern Biometric-Access-Flags nutzen odergetCredentialsohne zusätzlichen Prompt.- User-Lockout: behandeln
BiometricAuthError.USER_LOCKOUTundBiometricAuthError.USER_TEMPORARY_LOCKOUTvonverifyIdentitymit einer Cooldown-UI. - Simulator: Fingerabdruck oder Gesicht im Simulator registrieren, bevor Sie testen.
API Übersicht
Abschnitt „API Übersicht“isAvailable
Abschnitt mit dem Titel „isAvailable“Prüft, ob Hardware für biometrische Authentifizierung verfügbar ist.
import { NativeBiometric } from '@capgo/capacitor-native-biometric';
const result = await NativeBiometric.isAvailable();console.log(result);verifyIdentity
Abschnitt mit dem Titel „verifyIdentity“Fordert den Benutzer zur biometrischen Authentifizierung auf.
import { NativeBiometric } from '@capgo/capacitor-native-biometric';
await NativeBiometric.verifyIdentity();getCredentials
Abschnitt mit dem Titel „getCredentials“Ruft die gespeicherten Credentials für einen bestimmten Server ab.
import { NativeBiometric } from '@capgo/capacitor-native-biometric';
const result = await NativeBiometric.getCredentials({ server: 'example.com' });// The result holds sensitive values: use it without logging it.setCredentials
Abschnitt mit dem Titel „setCredentials“Speichert die angegebenen Credentials für einen bestimmten Server.
import { NativeBiometric } from '@capgo/capacitor-native-biometric';
await NativeBiometric.setCredentials({ username: 'username', password: 'password', server: 'example.com',});deleteCredentials
Abschnitt „deleteCredentials“Löscht die gespeicherten Credentials für einen bestimmten Server.
import { NativeBiometric } from '@capgo/capacitor-native-biometric';
await NativeBiometric.deleteCredentials({ server: 'example.com' });getSecureCredentials
Abschnitt „getSecureCredentials“Ruft die gespeicherten Credentials für einen bestimmten Server ab, wobei eine biometrische Authentifizierung erforderlich ist. Die Credentials müssen mit accessControl auf BIOMETRY_CURRENT_SET oder BIOMETRY_ANY gespeichert worden sein.
Unter iOS zeigt das System automatisch den biometrischen Prompt an, wenn auf das geschützte Keychain-Element zugegriffen wird. Unter Android wird der BiometricPrompt mit einem CryptoObject angezeigt, das an den Entschlüsselungskey der Credentials gebunden ist.
import { NativeBiometric } from '@capgo/capacitor-native-biometric';
const result = await NativeBiometric.getSecureCredentials({ server: 'example.com' });// The result holds sensitive values: use it without logging it.isCredentialsSaved
Abschnitt „isCredentialsSaved“Prüft, ob bereits Credentials für einen bestimmten Server gespeichert sind.
import { NativeBiometric } from '@capgo/capacitor-native-biometric';
const result = await NativeBiometric.isCredentialsSaved({ server: 'example.com' });console.log(result);Typreferenz
Abschnitt mit dem Titel „Typreferenz“IsAvailableOptions
Abschnitt „IsAvailableOptions“export interface IsAvailableOptions { /** * Only for iOS. * Specifies if should fallback to passcode authentication if biometric authentication is not available. * On Android, this parameter is ignored due to BiometricPrompt API constraints: * DEVICE_CREDENTIAL authenticator and negative button (cancel) are mutually exclusive. */ useFallback: boolean;}AvailableResult
Abschnitt „AvailableResult“Ergebnis der isAvailable()-Methode zur Prüfung der Verfügbarkeit biometrischer Authentifizierung.
export interface AvailableResult { /** * Whether authentication is available (biometric or fallback if useFallback is true) */ isAvailable: boolean; /** * The strength of available authentication method (STRONG, WEAK, or NONE) */ authenticationStrength: AuthenticationStrength; /** * The primary biometry type available on the device. * On Android devices with multiple biometry types, this returns MULTIPLE. * Use this for display purposes only - always use isAvailable for logic decisions. */ biometryType: BiometryType; /** * Whether the device has a secure lock screen (PIN, pattern, or password). * This is independent of biometric enrollment. */ deviceIsSecure: boolean; /** * Whether strong biometry (Face ID, Touch ID, or fingerprint on devices that consider it strong) * is specifically available, separate from weak biometry or device credentials. */ strongBiometryIsAvailable: boolean; /** * Error code from BiometricAuthError enum. Only present when isAvailable is false. * Indicates why biometric authentication is not available. * @see BiometricAuthError */ errorCode?: BiometricAuthError;}BiometryChangeListener
Abschnitt „BiometryChangeListener“Callback-Typ für den BiometryChangeListener.
export type BiometryChangeListener = (result: AvailableResult) => void;BiometricOptions
Abschnitt „BiometricOptions“export interface BiometricOptions { reason?: string; title?: string; subtitle?: string; description?: string; negativeButtonText?: string; /** * Only for iOS. * Specifies if should fallback to passcode authentication if biometric authentication fails. * On Android, this parameter is ignored due to BiometricPrompt API constraints: * DEVICE_CREDENTIAL authenticator and negative button (cancel) are mutually exclusive. */ useFallback?: boolean; /** * Only for iOS. * Set the text for the fallback button in the authentication dialog. * If this property is not specified, the default text is set by the system. */ fallbackTitle?: string; /** * Only for Android. * Set a maximum number of attempts for biometric authentication. The maximum allowed by android is 5. * @default 1 */ maxAttempts?: number; /** * Only for Android. * Specify which biometry types are allowed for authentication. * If not specified, all available types will be allowed. * @example [BiometryType.FINGERPRINT, BiometryType.FACE_AUTHENTICATION] */ allowedBiometryTypes?: BiometryType[];}GetCredentialOptions
Abschnitt „GetCredentialOptions“export interface GetCredentialOptions { server: string;}Credentials
Abschnitt „Credentials“export interface Credentials { username: string; password: string;}SetCredentialOptions
Abschnitt „SetCredentialOptions“export interface SetCredentialOptions { username: string; password: string; server: string; /** * Access control level for the stored credentials. * When set to BIOMETRY_CURRENT_SET or BIOMETRY_ANY, the credentials are * hardware-protected and require biometric authentication to access. * * On iOS, this adds SecAccessControl to the Keychain item. * On Android, this creates a biometric-protected Keystore key and requires * BiometricPrompt authentication for both storing and retrieving credentials. * * @default AccessControl.NONE * @since 8.4.0 */ accessControl?: AccessControl;}DeleteCredentialOptions
Abschnitt „DeleteCredentialOptions“export interface DeleteCredentialOptions { server: string;}GetSecureCredentialsOptions
Abschnitt „GetSecureCredentialsOptions“export interface GetSecureCredentialsOptions { server: string; /** * Reason for requesting biometric authentication. * Displayed in the biometric prompt on both iOS and Android. */ reason?: string; /** * Title for the biometric prompt. * Only for Android. */ title?: string; /** * Subtitle for the biometric prompt. * Only for Android. */ subtitle?: string; /** * Description for the biometric prompt. * Only for Android. */ description?: string; /** * Text for the negative/cancel button. * Only for Android. */ negativeButtonText?: string;}IsCredentialsSavedOptions
Abschnitt „IsCredentialsSavedOptions“export interface IsCredentialsSavedOptions { server: string;}IsCredentialsSavedResult
Abschnitt mit dem Titel „IsCredentialsSavedResult“export interface IsCredentialsSavedResult { isSaved: boolean;}AuthenticationStrength
Abschnitt mit dem Titel „AuthenticationStrength“export enum AuthenticationStrength { /** * No authentication available, even if PIN is available but useFallback = false */ NONE = 0, /** * Strong authentication: Face ID on iOS, fingerprints on devices that consider fingerprints strong (Android). * Note: PIN/pattern/password is NEVER considered STRONG, even when useFallback = true. */ STRONG = 1, /** * Weak authentication: Face authentication on Android devices that consider face weak, * or PIN/pattern/password if useFallback = true (PIN is always WEAK, never STRONG). */ WEAK = 2,}Source of Truth
Abschnitt mit dem Titel „Source of Truth“Diese Seite wird aus dem Plugin generiert src/definitions.ts. Führe den Sync erneut aus, wenn sich das öffentliche API upstream ändert.
Weiter geht's nach Getting Started
Abschnitt: „Weiter geht’s mit Getting Started“Wenn du es nutzt Erste Schritte Um Authentifizierungs- und Account-Flows zu planen, verbinde es mit Mit @capgo/capacitor-native-biometric für die native Funktionalität bei der Nutzung von @capgo/capacitor-native-biometric, @capgo/capacitor-social-login für die Implementierungsdetails in @capgo/capacitor-social-login, @capgo/capacitor-passkey für die Implementierungsdetails in @capgo/capacitor-passkey, @capgo/capacitor-native-biometric für die Implementierungsdetails in @capgo/capacitor-native-biometric, und Zwei-Faktor-Authentifizierung für die Implementierungsdetails zur Zwei-Faktor-Authentifizierung.