Работал ли с биометрией в проектах

Ответ

Да, работал с биометрией на Android. Использовал BiometricPrompt API для аутентификации пользователей. Вот пример кода:

val biometricPrompt = BiometricPrompt(
    activity,
    ContextCompat.getMainExecutor(activity),
    object : BiometricPrompt.AuthenticationCallback() {
        override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
            // Успешная аутентификация
        }
        override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
            // Ошибка аутентификации
        }
    }
)

val promptInfo = BiometricPrompt.PromptInfo.Builder()
    .setTitle("Вход")
    .setSubtitle("Используйте отпечаток пальца")
    .setNegativeButtonText("Отмена")
    .build()

biometricPrompt.authenticate(promptInfo)

Также учитывал:

  1. Проверку доступности биометрии через BiometricManager
  2. Поддержку разных типов аутентификации (отпечаток, лицо)
  3. Fallback на PIN/пароль при необходимости

Ответ 18+ 🔞

А, биометрия на андроиде! Да, работал, конечно. Ну, в смысле, не то чтобы я там отпечатки пальцев вручную сканировал, а через этот их BiometricPrompt API всё делал. Ёпта, удобная штука, если честно, не надо пароли помнить.

Вот, смотри, как примерно выглядит этот цирк с конями в коде:

val biometricPrompt = BiometricPrompt(
    activity,
    ContextCompat.getMainExecutor(activity),
    object : BiometricPrompt.AuthenticationCallback() {
        override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
            // Успешная аутентификация
        }
        override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
            // Ошибка аутентификации
        }
    }
)

val promptInfo = BiometricPrompt.PromptInfo.Builder()
    .setTitle("Вход")
    .setSubtitle("Используйте отпечаток пальца")
    .setNegativeButtonText("Отмена")
    .build()

biometricPrompt.authenticate(promptInfo)

Выглядит-то просто, да? Но тут, блядь, подводных камней — овердохуища. Первое дело — ты не можешь просто так взять и запустить это на любом устройстве. Надо сначала проверить, а есть ли там вообще биометрический сканер, или это просто мартышлюшка какая-то. Для этого есть BiometricManager. Иначе пользователь будет пялиться на пустой экран и думать, что приложение накрылось медным тазом.

Второй момент — поддержка разных типов. Ну, отпечаток — это классика, но сейчас эти телефоны с распознаванием лица плодятся как тараканы. Надо, чтобы и то, и другое работало, если устройство позволяет. А то будет смешно: у человека топовый аппарат, а ты ему говоришь «используйте отпечаток», а у него его нет, только лицо. Пизда рулю и доверия ебать ноль.

И третий, самый важный пункт — всегда нужен запасной вариант. Fallback, блядь, на PIN или пароль. Потому что бывает всякое: сканер грязный, палец порезал, лицо опухло с похмелья. Человек должен иметь возможность зайти в приложение, а не остаться за бортом с мыслью «какого хуя я это вообще устанавливал». Так что да, без этого никак. В общем, штука полезная, но голову надо включать, когда её внедряешь.