Начало работы с проверкой подлинности по отпечаткам пальцев

Чтобы приступить к работе, давайте сначала рассмотрим настройку проекта Xamarin.Android, чтобы приложение могло использовать проверку подлинности по отпечаткам пальцев.

  1. Обновить AndroidManifest.xml, чтобы объявить разрешения, необходимые для API-интерфейсов отпечатков пальцев.
  2. Получить ссылку на FingerprintManager.
  3. Убедиться, что устройство поддерживает сканирование отпечатков пальцев.

Запрос разрешений в манифесте приложения

Приложение Android должно запрашивать разрешение USE_FINGERPRINT в манифесте. На снимке экрана ниже показано, как добавить это разрешение в приложение в Visual Studio:

Enabling USE_FINGERPRINT in the Android Manifest screen

Получение экземпляра FingerprintManager

Далее приложение должно получить экземпляр FingerprintManager или класс FingerprintManagerCompat. Чтобы обеспечить совместимость с более старыми версиями Android, приложение Android должно использовать API совместимости, которые доступны в пакете NuGet для поддержки Android версии 4. В следующем фрагменте кода показано, как получить соответствующий объект из операционной системы:

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

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

В предыдущем фрагменте context — это любой Android.Content.Context в Android. Обычно это действие, выполняющее проверку подлинности.

Проверка допустимости

Приложение должно выполнить несколько проверок, чтобы определить возможность использования проверки подлинности по отпечаткам пальцев. В итоге существует пять условий, которые приложение использует для проверки допустимости:

Для API уровня 23— API отпечатков пальцев требуется уровень API 23 или более поздней версии. Класс FingerprintManagerCompat будет переносить проверку уровня API. Поэтому рекомендуется использовать библиотеку поддержки Android версии 4 и FingerprintManagerCompat. Они понадобятся для одной из этих проверок.

Оборудование— когда приложение запускается в первый раз, оно должно проверка для наличия сканера отпечатков пальцев:

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

Устройство защищенное . Пользователь должен защитить устройство с помощью блокировки экрана. Если пользователь не защищает устройство с помощью блокировки экрана, и для приложения важна безопасность, пользователь должен получить уведомление о необходимости настройки блокировки экрана. В следующем фрагменте кода показано, как проверить выполнение этого требования:

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

Зарегистрированные отпечатки пальцев. Пользователь должен иметь по крайней мере один отпечаток, зарегистрированный в операционной системе. Эта проверка разрешений должна выполняться перед каждой попыткой проверки подлинности:

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

Разрешения. Приложение должно запрашивать разрешение от пользователя перед использованием приложения. Для Android 5.0 и более старых версий пользователь предоставляет разрешение как условие установки приложения. В Android 6.0 появилась новая модель разрешений, которая проверяет разрешения во время выполнения. Этот фрагмент кода является примером проверки разрешений на 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
}

Проверка всех этих условий каждый раз, когда приложение предлагает варианты проверки подлинности, обеспечит лучшее взаимодействие с пользователем. Изменения или обновления устройства или операционной системы могут повлиять на доступность проверки подлинности по отпечаткам пальцев. Если вы решили кэшировать результаты какой бы то ни было из этих проверок, обеспечьте сценарии обновления.

Дополнительные сведения о том, как запросить разрешения в Android 6.0, см. в документации по Android Запрос прав доступа во время выполнения.