Sain hiljattain tilaisuuden työskennellä Googlen tänä vuonna julkaiseman uuden BiometricPrompt API-ominaisuuden kanssa. Vaikka sormenjälkitodennustuki on ollut saatavilla Android 6.0:sta lähtien, uusi BiometricPrompt lupaa suurempaa tarkkuutta ja johdonmukaista tietoturvaa kaikissa laitteissa, joissa sovelluksemme toimii.
Toteutettuani hiljattain biometrisen todennuksen android-sovellukseen ajattelin tuoda esiin muutamia perusaskeleita, joita tarvitaan tämän ominaisuuden toteuttamiseen android-sovelluksessa.
Aloitetaan siis!
Vaihe 2: Tarkista, tukeeko laite biometristä todennusta
Kohtaisesti tarkistamme, täyttyvätkö seuraavat ehdot:
- Laitteessa on Android 6.0 tai uudempi
- Laitteessa on sormenjälkitunnistin
- Käyttäjä on antanut sovelluksellesi luvan käyttää sormenjälkitunnistinta.
- Käyttäjä on rekisteröinyt vähintään yhden sormenjäljen laitteeseensa.
Voidaan luoda erillinen util-luokka, jolla tarkistetaan, täyttyvätkö edellä mainitut ehdot:
Vaihe 3: Näytä BiometricPrompt-dialogi
Kun edellä mainitut ehdot on tarkistettu, voidaan tarkistaa, onko laitteessa oleva android-versio Android P. Biometrinen valintaikkuna on tuettu vain Android P:ssä. Tarkastellaan sitä ensin.
Alhaalla oleva koodi näyttää BiometricPrompt-dialogin:
Käyttämällä BiometricPrompt-builderia voimme:
- setTitle() – Asettaa näytettävän otsikon (Pakollinen)
- setSubtitle() – Asettaa näytettävän alaotsikon (Valinnainen)
- setDescription() – Asettaa näytettävän kuvauksen(Valinnainen)
- setNegativeButton() – Asettaa tekstin negatiiviselle painikkeelle(Pakollinen). Sinun on myös annettava Executor-instanssi ja klikkauksen kuuntelija negatiivista painiketta varten.
Huomaa: Et voi mukauttaa dialogissa käytettävää kuvaketta tai virheilmoitusta.
Vaihe 4: Autentikoinnin Callbackin käsittely
Jatkossa käytämme BiometricPrompt.AuthenticationCallbackia kuunnellaksemme autentikointitapahtumia, jotka tulevat käyttäjiltä. Se sisältää 4 metodia:
onAuthenticationSucceeded
Kun sormenjälki on sovitettu onnistuneesti yhteen jonkin laitteeseen rekisteröidyn sormenjäljen kanssa, tämä callback käynnistyy. Callbackille välitetään AuthenticationResult-olio.
onAuthenticationFailed
Kun sormenjälki ei sovi yhteen minkään laitteeseen rekisteröidyn sormenjäljen kanssa, tämä callback käynnistyy.
onAuthenticationError
Kun on ilmennyt korjaamaton virhe ja todennusprosessi on päättynyt tuloksetta, tämä callback käynnistyy. Callbackille annetaan virhekoodi virheen syyn tunnistamiseksi sekä virheilmoitus. Erilaisia mahdollisia virhekoodeja ovat:
- BIOMETRIC_ERROR_LOCKOUT – Operaatio peruuntui, koska API on lukittu liian monen yrityksen vuoksi.
- BIOMETRIC_ERROR_LOCKOUT_PERMANENT – Operaatio peruuntui, koska BIOMETRIC_ERROR_LOCKOUT tapahtui liian monta kertaa.
- BIOMETRIC_ERROR_NO_SPACE – Toimintaa ei voida suorittaa loppuun, koska jäljellä ei ole tarpeeksi tallennustilaa operaation suorittamiseen.
- BIOMETRIC_ERROR_TIMEOUT – Aikakatkaisu on tapahtunut, koska nykyinen pyyntö on ollut käynnissä liian kauan.
- BIOMETRIC_ERROR_UNABLE_TO_PROCESS – Tunnistin ei kyennyt käsittelemään nykyistä kuvaa.
- BIOMETRIC_ERROR_USER_CANCELED – Käyttäjä peruutti toiminnon.
- BIOMETRIC_ERROR_VENDOR – Jos on olosuhteita, jotka eivät kuulu mihinkään edellä mainituista luokista.
- BIOMETRIC_ERROR_NO_BIOMETRICS – Käyttäjällä ei ole biometrisiä tunnisteita rekisteröitynä laitteeseen.
- BIOMETRIC_ERROR_CANCELED – Toiminto peruutettiin, koska biometrinen tunnistin ei ole käytettävissä.
- BIOMETRIC_ERROR_HW_NOT_PRESENT – Laitteessa ei ole biometristä tunnistinta.
- BIOMETRIC_ERROR_HW_UNAVAILABLE – Laitteen laitteisto ei ole käytettävissä.
onAuthenticationHelp
Tätä metodia kutsutaan, kun todennusprosessin aikana on ilmennyt muu kuin fataali virhe. Takaisinkutsussa annetaan apukoodi virheen syyn tunnistamiseksi sekä apuviesti. Erilaisia apukoodeja, joita voi esiintyä, ovat:
- BIOMETRIC_ACQUIRED_IMAGER_DIRTY – Biometrinen kuva oli liian kohinainen epäillyn sensorin likaantumisen vuoksi.
- BIOMETRIC_ACQUIRED_INSUFFICIENT – Biometrinen kuva oli liian kohinainen käsiteltäväksi. Tämä voi johtua monista eri syistä, mutta yleensä tämä johtuu siitä, että kuva ei ollut luettavissa.
- BIOMETRIC_ACQUIRED_PARTIAL – Vain osittainen biometrinen kuva tunnistettiin.
- BIOMETRIC_ACQUIRED_TOO_FAST – Biometrinen kuva oli epätäydellinen, koska käyttäjä liikutti sormeaan tunnistimessa liian nopeasti.
- BIOMETRIC_ACQUIRED_TOO_SLOW – Biometristä kuvaa ei voitu lukea, koska käyttäjä ei liikkunut sensorin ympärillä.
Jos sinulla on Android P -laite, niin siinä se on!
Mitä?