Condividi tramite


Introduzione all'autenticazione con impronta digitale

Per iniziare, verrà illustrato innanzitutto come configurare un progetto Xamarin.Android in modo che l'applicazione sia in grado di usare l'autenticazione con impronta digitale:

  1. Aggiornare AndroidManifest.xml per dichiarare le autorizzazioni richieste dalle API Di impronta digitale.
  2. Ottenere un riferimento all'oggetto FingerprintManager.
  3. Verificare che il dispositivo sia in grado di eseguire l'analisi delle impronte digitali.

Richiesta di autorizzazioni nel manifesto dell'applicazione

Un'applicazione Android deve richiedere l'autorizzazione USE_FINGERPRINT nel manifesto. Lo screenshot seguente mostra come aggiungere questa autorizzazione all'applicazione in Visual Studio:

Enabling USE_FINGERPRINT in the Android Manifest screen

Recupero di un'istanza di FingerprintManager

Successivamente, l'applicazione deve ottenere un'istanza della FingerprintManager classe o FingerprintManagerCompat . Per essere compatibile con le versioni precedenti di Android, un'applicazione Android deve usare l'API di compatibilità disponibile nel pacchetto NuGet del supporto Android v4. Il frammento di codice seguente illustra come ottenere l'oggetto appropriato dal sistema operativo:

// Using the Android Support Library v4
FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(context);

// Using API level 23:
FingerprintManager fingerprintManager = context.GetSystemService(Context.FingerprintService) as FingerprintManager;

Nel frammento di codice precedente, context è qualsiasi android Android.Content.Context. In genere si tratta dell'attività che esegue l'autenticazione.

Verifica dell'idoneità

Un'applicazione deve eseguire diversi controlli per assicurarsi che sia possibile usare l'autenticazione con impronta digitale. In totale, esistono cinque condizioni usate dall'applicazione per verificare l'idoneità:

Livello API 23 : le API di impronta digitale richiedono il livello API 23 o superiore. La FingerprintManagerCompat classe eseguirà il wrapping del controllo del livello API. Per questo motivo è consigliabile usare la libreria di supporto Android v4 e FingerprintManagerCompat. Questo account verrà tenuto conto di uno di questi controlli.

Hardware : quando l'applicazione viene avviata per la prima volta, deve verificare la presenza di uno scanner di impronte digitali:

FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(context);
if (!fingerprintManager.IsHardwareDetected)
{
    // Code omitted
}

Dispositivo protetto : l'utente deve avere il dispositivo protetto con un blocco dello schermo. Se l'utente non ha protetto il dispositivo con un blocco dello schermo e la sicurezza è importante per l'applicazione, l'utente deve ricevere una notifica che deve essere configurato un blocco dello schermo. Il frammento di codice seguente mostra come controllare questo pre-requisto:

KeyguardManager keyguardManager = (KeyguardManager) GetSystemService(KeyguardService);
if (!keyguardManager.IsKeyguardSecure)
{
}

Impronte digitali registrate: l'utente deve avere almeno un'impronta digitale registrata nel sistema operativo. Questo controllo delle autorizzazioni deve verificarsi prima di ogni tentativo di autenticazione:

FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(context);
if (!fingerprintManager.HasEnrolledFingerprints)
{
    // Can't use fingerprint authentication - notify the user that they need to
    // enroll at least one fingerprint with the device.
}

Autorizzazioni : l'applicazione deve richiedere l'autorizzazione all'utente prima di usare l'applicazione. Per Android 5.0 e versioni precedenti, l'utente concede l'autorizzazione come condizione per l'installazione dell'app. Android 6.0 ha introdotto un nuovo modello di autorizzazione che controlla le autorizzazioni in fase di esecuzione. Questo frammento di codice è un esempio di come verificare la presenza di autorizzazioni in Android 6.0:

// The context is typically a reference to the current activity.
Android.Content.PM.Permission permissionResult = ContextCompat.CheckSelfPermission(context, Manifest.Permission.UseFingerprint);
if (permissionResult == Android.Content.PM.Permission.Granted)
{
    // Permission granted - go ahead and start the fingerprint scanner.
}
else
{
    // No permission. Go and ask for permissions and don't start the scanner. See
    // https://developer.android.com/training/permissions/requesting.html
}

Il controllo di tutte queste condizioni ogni volta che l'applicazione offre opzioni di autenticazione garantisce che l'utente ottenga l'esperienza utente migliore. Le modifiche o gli aggiornamenti al dispositivo o al sistema operativo potrebbero influire sulla disponibilità dell'autenticazione tramite impronta digitale. Se si sceglie di memorizzare nella cache i risultati di uno di questi controlli, assicurarsi di soddisfare gli scenari di aggiornamento.

Per altre informazioni su come richiedere le autorizzazioni in Android 6.0, vedere la guida Android Richiedere autorizzazioni in fase di esecuzione.