Android Биометрия - какой подход выбрать (откат к паролю)? - PullRequest
0 голосов
/ 09 января 2020

У меня есть приложение, которое имеет экран PIN / блокировки. Чтобы открыть приложение, пользователю необходимо ввести свой PIN-код (который он ранее установил в приложении).

Я хочу добавить опцию Biometri c -> вместо ввода PIN-кода, просто разместите свой отпечатков пальцев. Однако у вас все еще должна быть возможность использовать PIN-код в качестве запасного варианта . Точно так же, как Revolut, LastPass или куча других банковских приложений. Довольно просто, верно?

Я посмотрел на новый API-интерфейс Biometri c, и он не поддерживает откат к пользовательскому пин-коду / паролю (только откат к экрану блокировки). Я мог бы как-то добавить это вручную (когда пользователь отменяет диалог), но это создает плохой UX (переключение с диалога стиля Google на экран стиля приложения). Кроме того, диалоговое окно Google имеет прозрачный фон (который может раскрыть конфиденциальную информацию), поэтому мне нужно было бы поместить его в отдельное пустое занятие (опять же, плохой опыт). Интересно, как банковские приложения планируют перейти на это?

Должен ли я сделать это по-старому (FingerprintManager)? Достаточно ли безопасен запасной вариант блокировки устройства? Если кто-то знает PIN-код вашего телефона, он может получить доступ ко всем вашим приложениям.

1 Ответ

1 голос
/ 10 января 2020

Вы смотрели на это сообщение в блоге ? или этот ? Библиотека биометрии AndroidX предоставляет метод под названием setNegativeButtonText(), который предоставляет возможность использовать учетные данные / учетные данные приложения, если пользователь не хочет использовать биометрию.

И затем в обратном вызове вы сделаете

override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
   super.onAuthenticationError(errorCode, errString)
   Log.d(TAG, "$errorCode :: $errString")
   if(errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {
       loginWithAppAccountCredentials() // Because negative button says use application/account password
   }
}

Кроме того, когда ваш пользователь нажимает кнопку входа в пользовательском интерфейсе, ваш onClick может выглядеть следующим образом:

override fun onClick(view: View) {
   val promptInfo = createPromptInfo()
   if (BiometricManager.from(context)
               .canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS) {
       biometricPrompt.authenticate(promptInfo, cryptoObject)
   } else {
       loginWithAppAccountCredentials()
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...