Afegiu l’autenticació d’empremtes dactilars a la vostra aplicació mitjançant BiometricPrompt

Autora: Lewis Jackson
Data De La Creació: 13 Ser Possible 2021
Data D’Actualització: 1 Juliol 2024
Anonim
Afegiu l’autenticació d’empremtes dactilars a la vostra aplicació mitjançant BiometricPrompt - Aplicacions
Afegiu l’autenticació d’empremtes dactilars a la vostra aplicació mitjançant BiometricPrompt - Aplicacions

Content


Utilitzem l'API BiometricPrompt per crear una aplicació que permeti a l'usuari confirmar la seva identitat mitjançant una empremta digital.

Obriu Android Studio i creeu un nou projecte amb la plantilla “Activitat buida”. Quan se us demani, configureu el SDK mínim del vostre projecte a 28 o superior, ja que això evitarà que la vostra aplicació s’instal·li a qualsevol cosa anterior a Android Pie.

Si voleu fer la vostra aplicació accessible a una gamma més àmplia de dispositius Android, haureu de comprovar en quina versió d'Android està instal·lada actualment l'aplicació i, a continuació, gestionar l'autenticació biomètrica de manera diferent, segons el nivell de l'API del dispositiu.

Afegiu la biblioteca Biomètrica

Per començar, obriu el vostre fitxer build.gradle a nivell de mòdul i afegiu la darrera versió de la biblioteca de Biometric com a dependència del projecte:


dependències {implementació androidx.biometric: biometric: 1.0.0-alpha03

Afegiu el permís USE_BIOMETRIC

L’API BiometricPrompt us permet aprofitar tots els diferents mètodes d’autenticació biomètrica que suporta el dispositiu, mitjançant un sol permís.

Obriu el Manifest del vostre projecte i afegiu el permís "USE_BIOMETRIC":

Creeu el disseny de la vostra aplicació

A continuació, creem el disseny de la nostra aplicació. Afegiré un sol botó que, quan el puntegeu, llançarà el diàleg d'autenticació d'empremtes digitals:

Obriu el fitxer strings.xml del vostre projecte i afegiu el recurs de cadena "auth":


BiometricPromptSample Autentifica't amb empremta digital

Autenticació de la identitat de l’usuari

Ara, mirem com podeu autenticar la identitat de l’usuari mitjançant BiometricPrompt.

Creeu una instància de referència biomètrica

La classe BiometricPrompt inclou una classe Builder acompanyant () que podeu utilitzar per crear una instància BiometricPrompt i iniciar l'autenticació:

biometricPrompt.PromptInfo final promptInfo = nou BiometricPrompt.PromptInfo.Builder ()

Quan creeu una instància de BiometricPrompt, haureu de definir el text que hauria d’aparèixer al diàleg d’autenticació i personalitzar el “botó negatiu”, que és el botó que permet a l’usuari cancel·lar l’autenticació.

Per configurar el quadre de diàleg d'autenticació, haureu de proporcionar el següent:

  • setTitle. El títol del prompt d’autenticació d’empremtes dactilars. (Obligatori)
  • setSubtitle. El subtítol del símbol d’autorització d’empremtes dactilars. (Opcional)
  • setDescription. Una descripció addicional que es mostrarà al quadre de diàleg d'autenticació. (Opcional)
  • setNegativeButton (text, executor, oient). Aquesta és l’etiqueta del botó negatiu, per exemple “Cancel·la” o “Surt”. Quan configureu el botó negatiu, també haureu de proporcionar una instància d’Executor i un OnClickListener per tal que l’usuari pugui rebutjar el diàleg d’autenticació.

En el moment d’escriure, no s’ha pogut personalitzar la icona ni l’error que s’utilitzava al diàleg d’autenticació.

Finalment, haureu de trucar a la creació (). Això ens proporciona el següent:

final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () .setTitle ("El text del títol va aquí") .setSubtitle ("El subtítol va aquí") .setDescription ("Aquesta és la descripció") .setNegativeButtonText ("Cancel·la"). .build ();

Gestioneu les devolucions d’autenticació

A la instància BiometricPrompt se li assigna un conjunt de mètodes de devolució d'autenticació que notificaran la vostra aplicació sobre els resultats del procés d'autenticació.

Haureu d’englobar tots aquests devolucions en una instància de la classe BiometricPrompt.AuthenticationCallback:

final BiometricPrompt myBiometricPrompt = new BiometricPrompt (activitat, newExecutor, nou BiometricPrompt.AuthenticationCallback () {

El següent pas és implementar alguns o tots els mètodes de devolució següents:

1. OnAuthenticationSuceded ()

Aquest mètode s'anomena quan l'empremta digital es combina amb una de les empremtes dactilars registrades al dispositiu. En aquest escenari, un objecte AuthenticationResult es passa a la devolució de trucada onAuthenticationSucceeded i la vostra aplicació realitzarà una tasca com a resposta a aquesta autenticació exitosa.

Per ajudar a mantenir les coses senzilles, la nostra aplicació respondrà imprimint-la al Logcat d'Android Studio:

@Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (resultat); Log.d (TAG, "Reconeixement de l'empremta digital amb èxit"); }

2. onAuthenticationFailed ()

Aquest mètode s’activa quan es finalitza la exploració amb èxit, però l’empremta digital no coincideix amb cap de les impressions registrades al dispositiu. Un cop més, la nostra aplicació respondrà a aquest esdeveniment d'autenticació, imprimint a Logcat:

@Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, "No es reconeix l'empremta digital"); }

3. onAuthenticationError

Aquesta devolució es desencadena sempre que es produeix un error que no es pugui recuperar i l'autenticació no es pugui completar correctament. Per exemple, potser el sensor tàctil del dispositiu està cobert per brutícia o greix, l’usuari no ha registrat cap empremta digital en aquest dispositiu o no hi ha prou memòria disponible per realitzar una exploració biomètrica completa.

Aquí teniu el codi que utilitzaré a la meva aplicació:

@Override public void onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {Log.d (TAG, "S'ha produït un error irrecuperable"); }}

4. OnAuthenticationHelp

El mètode onAuthenticationHelp s’anomena sempre que es produeixi un error no fatal i inclogui un codi d’ajuda i un que proporcioni més informació sobre l’error.

Per ajudar a mantenir el nostre codi senzill, no utilitzaré onAuthenticationHelp a la nostra aplicació, però una implementació semblaria així:

@Override public void onAuthenticationHelp (int helpCode, CharSequence helpString) {super.onAuthenticationHelp (helpCode, helpString); biometricCallback.onAuthenticationHelp (helpCode, helpString); }

Finalment, hem d’anomenar el mètode authenticate () de la instància BiometricPrompt:

myBiometricPrompt.authenticate (promptInfo);

Implantació de l'autenticació biomètrica d'Android Pie

Un cop hàgiu completat tots els passos anteriors, el vostre MainActivity hauria de tenir un aspecte així:

importar androidx.appcompat.app.AppCompatActivity; importar androidx.biometric.BiometricPrompt; importa android.os.Bundle; importa java.util.concurrent.Executor; importar java.util.concurrent.Executors; importa androidx.fragment.app.FragmentActivity; importa android.util.Log; importa android.view.View; importa androidx.annotation.NonNull; public class MainActivity s'estén AppCompatActivity {private static final String TAG = MainActivity.class.getName (); @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); // Creeu un conjunt de fils amb un sol fil // Executor newExecutor = Executors.newSingleThreadExecutor (); FragmentActivity = aquesta; // Comença a escoltar esdeveniments d'autenticació // final BiometricPrompt myBiometricPrompt = new BiometricPrompt (activitat, newExecutor, new BiometricPrompt.AuthenticationCallback () {@Override // onAuthenticationError s'anomena quan es produeix un error fatal // public void onAuthenticationError (intonCodeNon CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {// Imprimeix a Logcat // Log.d (TAG, "Es va produir un error irrecuperable");}} // OnAuthenticationSucceeded s'anomena quan s'emparella amb èxit una empremta digital // @Override public void onAuthenticationSucceeded (resultat de @NonNull BiometricPrompt.AuthenticationResult) {super.onAuthenticationSucceeded (resultat); // Imprimeix a Logcat // Log.d (TAG, "Empremta digital" es reconeix amb èxit ");} // onAuthenticationFailed s'anomena quan l'empremta digital no coincideix amb // @Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); // Imprimeix a Registre cat // Log.d (TAG, "No es reconeix l'empremta digital"); }}); // Creeu la instància BiometricPrompt // final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () // Afegiu algun text al diàleg // .setTitle ("El text del títol surt aquí") .setSubtitle ("El subtítol va aquí" ) .setDescription ("Aquesta és la descripció") .setNegativeButtonText ("Cancel·la") // Construir el diàleg // .build (); // Assigna un onClickListener al botó "Autenticació" de l'aplicació // findViewById (R.id.launchAuthentication) .setOnClickListener (nou View.OnClickListener () {@Override public void onClick (View v) {myBiometricPrompt.auticate) }); }}

Prova del vostre projecte

Ara heu creat el vostre projecte, és el moment de posar-lo a prova i veure si realment afegeix autenticació d’empremtes digitals a la vostra aplicació.

Per executar aquest projecte, necessitaràs un smartphone o tauleta físic que estigui executant Android Pie o un dispositiu virtual d’Android (AVD) que utilitzi la vista prèvia d’Android P o superior.

També haureu de registrar almenys una empremta digital al vostre dispositiu. Si utilitzeu un dispositiu Android físic, aleshores:

  • Assegureu-vos la pantalla de bloqueig amb un PIN, una contrasenya o un patró, si encara no ho teniu (navegant a "Configuració> Pantalla de bloqueig i seguretat> Tipus de bloqueig de pantalla> Patró / Pin / Contrasenya" i seguint les instruccions de la pantalla).
  • Inicieu l'aplicació "Configuració" del dispositiu.
  • Seleccioneu "Pantalla de bloqueig i seguretat".
  • Seleccioneu "Escàner d'empremtes digitals".
  • Seguiu les instruccions per registrar una o més empremtes dactilars.

Els dispositius virtuals Android no tenen cap sensor de tacte físic, per la qual cosa haureu de simular un esdeveniment tàctil:

  • Llanceu el vostre AVD, si encara no ho heu fet.
  • Al costat de l'AVD, podreu veure una sèrie de botons. Cerqueu el botó "Més" de tres punts (on es troba el cursor a la captura de pantalla següent) i feu-hi un clic. S'inicia la finestra "Controls ampliats".
  • A la finestra Controls ampliats, seleccioneu "Empremta digital". Això obre un conjunt de controls, on podeu emular diversos esdeveniments tàctils.
  • Obriu el menú desplegable i trieu l’empremta digital que voleu registrar en aquest dispositiu; Estic fent servir "Dit 1."
  • Ara, posem l’atenció en el dispositiu emulat. Inicieu l'aplicació "Configuració" de l'AVD i seleccioneu "Seguretat i ubicació".
  • Si encara no heu configurat un PIN, una contrasenya o un patró, seleccioneu "Bloqueig de pantalla" i seguiu les instruccions a la pantalla per protegir la pantalla de bloqueig, i torneu a la pantalla principal de "Configuració> Seguretat i ubicació".
  • Seleccioneu "Empremta digital", seguida de "Afegir empremta dactilar".
  • Ara se li demanarà que premeu el dit al sensor tàctil. En lloc d'això, continueu fent clic a "Toqueu el sensor" fins que veieu una "empremta digital afegida".

  • Feu clic a "Fet".
  • Si voleu registrar empremtes dactilars addicionals, esbandiu i repetiu els passos anteriors.

Un cop hàgiu registrat almenys una empremta digital, ja esteu preparats per posar a prova la vostra sol·licitud. Provaré com gestiona la nostra aplicació tres escenaris diferents:

  • L’usuari intenta autenticar-se mitjançant una empremta digital registrada.
  • L'usuari intenta autenticar-se mitjançant una empremta digital que no està registrada en aquest dispositiu.
  • L’usuari intenta autenticar-se mitjançant empremtes dactilars no registrades, diverses vegades i de manera ràpida.

Intentem autenticar-nos mitjançant l’empremta digital que acabem de registrar al nostre dispositiu:

  • Assegureu-vos que esteu visualitzant el Monitor de Logcat d'Android Studio, ja que és on apareixeran les diverses aplicacions.

  • Instal·leu la vostra aplicació al dispositiu de prova.
  • Toqueu el botó "Autentifica-se amb empremta digital" de l'aplicació. Apareixerà el quadre de diàleg d'autenticació d'empremtes digitals.
  • Si utilitzeu un dispositiu físic, mantingueu premut el dit contra el sensor tàctil del dispositiu. Si utilitzeu un AVD, utilitzeu el botó "Toqueu el sensor" per simular un esdeveniment tàctil.
  • Comproveu el monitor Logcat. Si l'autenticació ha estat un èxit, heu de veure el següent: "Reconeixement de l'empremta digital amb èxit"

A continuació, vegem què passa si intentem autenticar-nos mitjançant una empremta digital que no està registrada en aquest dispositiu:

  • Toqueu de nou el botó "Autentifica-se amb empremta digital" de l'aplicació.
  • Si utilitzeu un AVD, utilitzeu la finestra "Controls ampliats" per seleccionar una empremta digital no ho és registrat en aquest dispositiu; Estic fent servir “Dedicat 2.” Feu clic al botó “Toque el sensor”.
  • Si utilitzeu un telèfon intel·ligent o una tauleta Android Android, després manteniu la punta dels dits contra el sensor tàctil del dispositiu, assegureu-vos que utilitzeu un dit que no està registrat en aquest dispositiu!
  • Comproveu el logcat d'Android Studio, ara es mostrarà una "empremta digital no reconeguda".

Com ja s’ha comentat, l’API BiometricPrompt gestiona automàticament els intents d’autenticació fallits excessius. Per provar aquesta funcionalitat:

  • Toqueu el botó “Autentifica’t amb l’empremta digital” de l’aplicació.
  • Intenteu autenticar-vos diverses vegades de successió ràpida mitjançant una empremta digital no registrada.
  • Després d’uns quants intents, el quadre de diàleg s’hauria de tancar automàticament. Comproveu el logcat d'Android Studio i heu de veure el següent: "S'ha produït un error que no es pot recuperar".

Podeu descarregar la sol·licitud completa de GitHub.

Embalatge

En aquest article, explorem la nova API BiometricPrompt d'Android Pie, que us permet afegir autenticació de les empremtes dactilars a la vostra aplicació. Creieu que BiometricPrompt és una millora dels mètodes d’autenticació d’empremtes digitals anteriors d’Android? Feu-nos-ho saber als comentaris a continuació!

Amb molte de le aplicacion de Google que aconegueixen el tractament en mode foc, la deenvolupadora d'aplicacion Jane Manchun Wong va dir avui a Twitter que l'aplicació Google One podria e...

El Google Home Mini té una bona quantitat de $ 50, però empre hi ha promocion i no voleu gatar tant diner en efectiu. Què paa i no voleu gatar diner en efectiu?...

Articles Frescos