Jeg fik for nylig mulighed for at arbejde med den nye BiometricPrompt API-funktion, som Google har frigivet i år. Mens understøttelse af fingeraftryksgodkendelse har været tilgængelig siden Android 6.0, lover den nye BiometricPrompt større nøjagtighed og et ensartet sikkerhedsniveau på tværs af alle enheder, der kører vores applikation.
Da jeg for nylig har implementeret biometrisk godkendelse i en android-app, tænkte jeg, at jeg ville fremhæve nogle af de grundlæggende trin, der kræves for at implementere denne funktion i en android-app.
Så lad os begynde!
Stræk 2: Kontroller, om enheden understøtter biometrisk autentificering
Specifikt vil vi kontrollere, om følgende betingelser er opfyldt:
- Enheden kører Android 6.0 eller højere
- Enheden er udstyret med en fingeraftrykssensor
- Brugeren har givet din app tilladelse til at få adgang til fingeraftrykssensoren.
- Brugeren har registreret mindst ét fingeraftryk på sin enhed.
Vi kan oprette en separat util-klasse til at kontrollere, om ovenstående betingelser er opfyldt:
Stræk 3: Vis dialogboksen BiometricPrompt
Når ovenstående betingelser er kontrolleret, kan vi kontrollere, om Android-versionen på enheden er Android P. Den biometriske dialogboks understøttes kun i Android P. Lad os først tage et kig på det.
Nedenstående kode er til at vise en biometricPrompt-dialog:
Ved hjælp af BiometricPrompt-byggeren kan vi:
- setTitle() – Indstil titlen, der skal vises (Krævet)
- setSubtitle() – Indstil undertitlen, der skal vises (Valgfrit)
- setDescription() – Indstil beskrivelsen, der skal vises (Valgfrit)
- setNegativeButton() – Indstil teksten til den negative knap (Krævet). Du skal også angive en Executor-instans og en kliklytter for den negative knap.
Bemærk: Du kan ikke tilpasse det ikon eller den fejlmeddelelse, der bruges i dialogen.
Stræk 4: Håndter autentificering Callback
Næst bruger vi BiometricPrompt.AuthenticationCallback til at lytte efter autentificeringshændelser fra brugerne. Den indeholder 4 metoder:
onAuthenticationSucceeded
Når fingeraftrykket er blevet matchet med et af de fingeraftryk, der er registreret på enheden, udløses dette callback. Der overføres et AuthenticationResult-objekt til callbacken.
onAuthenticationFailed
Når fingeraftrykket ikke passer til et af de fingeraftryk, der er registreret på enheden, udløses denne callback.
onAuthenticationError
Når der er opstået en fejl, der ikke kan genoprettes, og godkendelsesprocessen er afsluttet uden succes, udløses denne callback. Callbacken er forsynet med en fejlkode til identifikation af fejlårsagen sammen med fejlmeddelelsen. De forskellige typer fejlkoder, der kan forekomme, er:
- BIOMETRIC_ERROR_LOCKOUT – Operationen blev annulleret, fordi API’et er spærret på grund af for mange forsøg.
- BIOMETRIC_ERROR_LOCKOUT_PERMANENT – Operationen blev annulleret, fordi BIOMETRIC_ERROR_LOCKOUT opstod for mange gange.
- BIOMETRIC_ERROR_NO_SPACE – Operationen kan ikke fuldføres, fordi der ikke er nok lagerplads tilbage til at fuldføre operationen.
- BIOMETRIC_ERROR_TIMEOUT – Timeout opstår, da den aktuelle anmodning har kørt for længe.
- BIOMETRIC_ERROR_UNABLE_TO_PROCESS – Sensoren var ikke i stand til at behandle det aktuelle billede.
- BIOMETRIC_ERROR_USER_CANCELED – Brugeren afbrød operationen.
- BIOMETRIC_ERROR_VENDOR – Hvis der er forhold, der ikke falder ind under en af de ovennævnte kategorier.
- BIOMETRIC_ERROR_NO_BIOMETRICS – Brugeren har ingen biometriske data registreret i enheden.
- BIOMETRIC_ERROR_CANCELED – Operationen blev annulleret, fordi den biometriske sensor ikke er tilgængelig.
- BIOMETRIC_ERROR_HW_NOT_PRESENT – Enheden har ikke en biometrisk sensor.
- BIOMETRIC_ERROR_HW_UNAVAILABLE – Enhedens hardware er ikke tilgængelig.
onAuthenticationHelp
Denne metode kaldes, når der er opstået en ikke-fatal fejl under godkendelsesprocessen. Callbacken vil blive forsynet med en hjælpekode til at identificere årsagen til fejlen sammen med en hjælpemeddelelse. De forskellige typer hjælpekoder, der kan forekomme, er:
- BIOMETRIC_ACQUIRED_IMAGER_DIRTY – Det biometriske billede var for støjende på grund af mistanke om snavs på sensoren.
- BIOMETRIC_ACQUIRED_INSUFFICIENT – Det biometriske billede var for støjende til at blive behandlet. Dette kan skyldes en række forskellige årsager, men generelt er det fordi billedet ikke kunne læses.
- BIOMETRIC_ACQUIRED_PARTIAL – Der blev kun registreret et delvist biometrisk billede.
- BIOMETRIC_ACQUIRED_TOO_FAST – Det biometriske billede var ufuldstændigt, fordi brugeren bevægede sin finger for hurtigt rundt om sensoren.
- BIOMETRIC_ACQUIRED_TOO_SLOW – Det biometriske billede kunne ikke læses, fordi brugeren ikke bevægede sig rundt om sensoren.
Hvis du har en Android P-enhed, så er det slut!