Posso accedere alle impronte digitali dal mio telefono Android per sviluppare un'app?
Segui
Le API delle impronte digitali di Android stanno portando l'autenticazione dell'utente ad un livello completamente nuovo, rendendola veloce e sicura. Sbloccare un telefono con un solo tocco è una delle mie caratteristiche preferite in Marshmallow e vorrei davvero che ci fossero più app là fuori che utilizzano l'identificazione del tocco. Il riconoscimento delle impronte digitali in sé non è nuovo, ma il supporto a livello di OS per esso in Android è stato molto atteso. Nel prossimo futuro, eliminerà la necessità di integrare SDK specifici per le impronte digitali dai produttori di dispositivi come Samsung, il che, senza dubbio, sarebbe un grande sollievo per gli sviluppatori di app.
Questa panoramica vi farà familiarizzare con il flusso di lavoro per l'utilizzo di Android 6.0 Fingerprint API basato su progetti campione di Google. Alcuni punti principali da tenere a mente:
Non ci sono molti dispositivi (ancora) che eseguono Android 6.0+ che hanno l'hardware per le impronte digitali.
Per alcuni dispositivi (per esempio, i telefoni Samsung Galaxy) che hanno l'hardware ma non eseguono Android 6.0+, dovrete usare l'SDK del produttore.
Android Marshmallow ha introdotto un nuovo modello di permessi che richiede all'utente di darvi permessi sensibili in fase di esecuzione. Pertanto, tieni conto che l'utente potrebbe non concedere alla tua app il permesso per la scansione delle impronte digitali.
Puoi creare una coppia di chiavi simmetriche o asimmetriche per la crittografia dei dati (vedi questo post per maggiori dettagli ed esempio di codice sul flusso di chiavi asimmetriche per le app Android).
Mantieni l'UI user-friendly. Consultate queste specifiche di design di Google. Assicurati che l'UI indichi quando lo scanner è pronto per l'utente. Si raccomanda di utilizzare l'icona standard di Google per le impronte digitali che è facilmente riconoscibile dagli utenti.
Non dimenticare di annullare l'ascolto di un'impronta digitale quando la tua app va in background. Se non si interrompe l'ascolto, altre app non possono utilizzare lo scanner, compresa la schermata di blocco. In altre parole, trattate il lettore di impronte digitali come una macchina fotografica. (Tidbit da Eric Richardson )
Iniziamo!
Imposta l'SDK e i permessi nel manifesto Per prima cosa, imposta la tua targetSdkVersion a "23" e aggiungi il permesso USE_FINGERPRINT nel tuo manifesto.
Fornisci un'istanza di KeyStore e KeyGenerator "AndroidKeyStore" è registrato come tipo di KeyStore da usare con il metodo KeyStore.getInstance(type) e KeyGenerator.getInstance(algoritmo, provider).
Richiedi un permesso in fase di runtime Chiama requestPermissions() nella onCreate() della tua Activity:
requestPermissions(new String[]{Manifest.permission.USE_FINGERPRINT}, FINGERPRINT_PERMISSION_REQUEST_CODE);
Il FINGERPRINT_PERMISSION_REQUEST_CODE è un valore di codice di richiesta da abbinare a un risultato riportato in onRequestPermissionsResult(int, String[], int[]). Puoi scegliere qualsiasi valore tu voglia.
Controlla se il permesso è stato concesso Ora, in questa callback controllerai se il permesso è stato concesso:
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] state) { if (requestCode == FINGERPRINT_PERMISSION_REQUEST_CODE && state[0] == PackageManager.PERMISSION_GRANTED) { }}
Inizializza la tua UI nel corpo di onRequestPermissionsResult().
Assicurati che l'hardware sia presente e funzionale FingerprintManager è una classe che coordina l'hardware dello scanner.
@Provides public FingerprintManager providesFingerprintManager(Context context) { return context.getSystemService(FingerprintManager.class); }
Controllare se lo scanner esiste è facile con FingerprintManager.isHardwareDetected().
Controllare che lo schermo di blocco sia stato impostato Per controllare se l'utente ha impostato il suo schermo di blocco, ottieni un'istanza di KeyguardManager chiamando getSystemService(java.lang.String) con l'argomento KEYGUARD_SERVICE, e usa il metodo KeyguardManager.isKeyguardSecure(). Per controllare se ci sono impronte digitali iscritte, usa FingerprintManager.hasEnrolledFingerprints().
Crea una coppia chiave/chiave Inizializza un KeyStore vuoto passando null in KeyStore.load(). Un KeyGenerator o un KeyPairGenerator (per la coppia di chiavi asimmetriche) è la classe usata per creare le chiavi. Deve essere inizializzato con un KeyGenParameterS
Articoli simili
- Come vengono memorizzate le impronte digitali nei telefoni che usano la verifica delle impronte digitali?
- Quali sono gli usi del sensore d'impronte digitali del portatile oltre al login di Windows? Possiamo usarlo per accedere ai siti web? Se sì, come?
- Come sviluppare un login con impronte digitali per un sito web
- Come ottenere le impronte digitali dal mio protettore dello schermo