Udostępnij za pośrednictwem


Wprowadzenie do uwierzytelniania odciskiem palca

Aby rozpocząć, najpierw omówimy sposób konfigurowania projektu platformy Xamarin.Android, aby aplikacja mogła używać uwierzytelniania odciskiem palca:

  1. Zaktualizuj AndroidManifest.xml , aby zadeklarować uprawnienia wymagane przez interfejsy API odcisku palca.
  2. Uzyskaj odwołanie do .FingerprintManager
  3. Sprawdź, czy urządzenie może skanować odciski palców.

Żądanie uprawnień w manifeście aplikacji

Aplikacja systemu Android musi zażądać USE_FINGERPRINT uprawnienia w manifeście. Poniższy zrzut ekranu przedstawia sposób dodawania tego uprawnienia do aplikacji w programie Visual Studio:

Enabling USE_FINGERPRINT in the Android Manifest screen

Pobieranie wystąpienia programu FingerprintManager

Następnie aplikacja musi uzyskać wystąpienie FingerprintManager klasy lub FingerprintManagerCompat . Aby zapewnić zgodność ze starszymi wersjami systemu Android, aplikacja systemu Android powinna używać interfejsu API zgodności znalezionego w pakiecie NuGet pomocy technicznej systemu Android w wersji 4. Poniższy fragment kodu pokazuje, jak uzyskać odpowiedni obiekt z systemu operacyjnego:

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

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

W poprzednim fragmencie context kodu element to dowolny system Android Android.Content.Context. Zazwyczaj jest to działanie, które wykonuje uwierzytelnianie.

Sprawdzanie uprawnień

Aplikacja musi wykonać kilka kontroli, aby upewnić się, że można użyć uwierzytelniania odciskiem palca. W sumie istnieje pięć warunków używanych przez aplikację do sprawdzania uprawnień:

Poziom 23 interfejsu API — interfejsy API linii papilarnych wymagają interfejsu API poziomu 23 lub nowszego. Klasa FingerprintManagerCompat opakowuje sprawdzanie poziomu interfejsu API. Z tego powodu zaleca się użycie biblioteki pomocy technicznej systemu Android w wersji 4 i FingerprintManagerCompat; będzie to uwzględniać jedną z tych kontroli.

Sprzęt — gdy aplikacja jest uruchamiana po raz pierwszy, powinna sprawdzić obecność skanera linii papilarnych:

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

Urządzenie jest zabezpieczone — użytkownik musi mieć urządzenie zabezpieczone blokadą ekranu. Jeśli użytkownik nie zabezpieczył urządzenia blokadą ekranu i zabezpieczeniami jest ważne dla aplikacji, użytkownik powinien zostać powiadomiony, że należy skonfigurować blokadę ekranu. Poniższy fragment kodu pokazuje, jak sprawdzić to wstępne wymagania:

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

Zarejestrowane odciski palców — użytkownik musi mieć co najmniej jeden odcisk palca zarejestrowany w systemie operacyjnym. To sprawdzenie uprawnień powinno nastąpić przed każdą próbą uwierzytelniania:

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.
}

Uprawnienia — aplikacja musi zażądać uprawnień od użytkownika przed użyciem aplikacji. W przypadku systemu Android 5.0 lub starszego użytkownik przyznaje uprawnienie jako warunek instalacji aplikacji. System Android 6.0 wprowadził nowy model uprawnień, który sprawdza uprawnienia w czasie wykonywania. Ten fragment kodu jest przykładem sprawdzania uprawnień w systemie 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
}

Sprawdzenie wszystkich tych warunków za każdym razem, gdy aplikacja oferuje opcje uwierzytelniania, zapewni użytkownikowi najlepsze środowisko użytkownika. Zmiany lub uaktualnienia urządzenia lub systemu operacyjnego mogą mieć wpływ na dostępność uwierzytelniania odciskiem palca. Jeśli zdecydujesz się buforować wyniki dowolnego z tych testów, upewnij się, że obsługujesz scenariusze uaktualniania.

Aby uzyskać więcej informacji na temat żądania uprawnień w systemie Android 6.0, zapoznaj się z przewodnikiem Dotyczącym żądania uprawnień w czasie wykonywania.