Разработка авторизации по биометрии (Touch ID) в iOS-приложении

Разработка авторизации по биометрии (Touch ID) в iOS-приложении Мы часто сталкиваемся с проектами, где заказчик хочет защитить доступ к приложению биометрией, но не учитывает нюансы разных типов сенсоров. Touch ID старше Face ID, но до сих пор жив: iPhone SE 3rd gen, iPad mini 6, iPad 10th gen с

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Разработка авторизации по биометрии (Touch ID) в iOS-приложении
Простой
~1 день

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Разработка авторизации по биометрии (Touch ID) в iOS-приложении

Мы часто сталкиваемся с проектами, где заказчик хочет защитить доступ к приложению биометрией, но не учитывает нюансы разных типов сенсоров. Touch ID старше Face ID, но до сих пор жив: iPhone SE 3rd gen, iPad mini 6, iPad 10th gen с боковым сенсором — всё это действующий парк устройств у реальных пользователей. LAContext один и тот же, но поведение отличается в деталях, которые бьют в продакшене. Наш опыт показывает, что правильная реализация экономит часы отладки и повышает доверие пользователей.

Почему стоит выбрать биометрическую авторизацию?

Биометрия ускоряет вход, не снижая безопасности, если грамотно обрабатывать ошибки и fallback. Touch ID особенно полезен в enterprise-сценариях: доступ к медицинским данным, финансовым операциям, корпоративной почте. Мы гарантируем, что ваше приложение будет готово к любым сценариям — от мокрых пальцев до блокировки сенсора.

Специфика Touch ID против Face ID

Главное отличие — мультипальцевая регистрация. У пользователя может быть до пяти отпечатков. При biometryType == .touchID и успешной аутентификации вы не знаете, какой именно палец был использован — API этого не отдаёт. Для большинства сценариев это нормально, но в enterprise-приложениях с журналом аудита иногда хотят логировать "какое устройство использовалось". Touch ID это не позволяет по дизайну.

Второе отличие — скорость деградации. Влажные пальцы, перчатки, порезы — Touch ID чаще уходит в fallback, чем Face ID. Это значит, что .userFallback надо обрабатывать качественно, а не показывать кнопку "Введите пароль" без объяснений.

Ошибка, которую встречаю регулярно: разработчик проверяет biometryType один раз при запуске и кэширует результат. Пользователь добавляет новый отпечаток в настройках — кэш устарел, Keychain-запись с .biometryCurrentSet инвалидирована, приложение падает с errSecItemNotFound (-25300) при попытке достать токен. Правильно: создавать новый LAContext перед каждой попыткой аутентификации и не хранить контекст дольше одной транзакции.

Критерий Touch ID Face ID
Тип сенсора Ёмкостный сканер отпечатков Камера TrueDepth
Fallback при мокрых пальцах Частый Редкий
Поддержка мультипальцевости Да Нет
Подходит для наушников Да Да, но не в маске
Скорость в среднем ~0.2 с ~0.1 с

Как реализовать Touch ID без боли?

Политика та же — .deviceOwnerAuthenticationWithBiometrics. Но для Touch ID особенно важен параметр localizedFallbackTitle у LAContext. Если поставить пустую строку "" — кнопка fallback скроется полностью. Если не задать — появится "Enter Password" (системный текст). Ставим кастомный: "Войти по PIN-коду" или "Использовать пароль приложения" — в зависимости от того, что у вас реализовано.

Хранение секрета в Keychain под Touch ID:

var error: Unmanaged<CFError>? guard let access = SecAccessControlCreateWithFlags( kCFAllocatorDefault, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, [.biometryCurrentSet, .privateKeyUsage], &error ) else { /* handle */ } 

Флаг .privateKeyUsage добавляется, если секрет используется для крипто-операций (подпись запросов). Для простого хранения токена достаточно .biometryCurrentSet.

Боковой Touch ID (iPad, iPhone SE)

На iPad mini 6 и iPad 10th gen сенсор встроен в кнопку питания. Анимация разблокировки другая — пользователь прикладывает палец к боковой кнопке, а не к нижней. Это влияет на то, как вы позиционируете подсказки в UI. biometryType вернёт .touchID в обоих случаях — различий в API нет, только в UX-копирайтинге.

Как гарантировать стабильность?

Тестируем все edge cases по чек-листу:

  • Отпечаток не распознан три раза подряд → lockout → корректный переход на fallback
  • Touch ID отключён в настройках устройства → .biometryNotAvailable
  • Passcode не задан → canEvaluatePolicy вернёт false с ошибкой .passcodeNotSet
  • Приложение уходит в background во время ожидания Touch ID → .systemCancel

На симуляторе эмулируем через Features → Touch ID → Matching Touch / Non-matching Touch.

Что входит в работу

  • Интеграция LocalAuthentication с обработкой всех состояний и error codes
  • Хранение токенов или ключей в Keychain с биометрической защитой
  • Настройка fallback-интерфейса (PIN-код / пароль приложения)
  • Юнит-тесты для каждого сценария
  • Документация по использованию и возможным проблемам

Запишитесь на консультацию: мы оценим ваш проект и предложим оптимальное решение.

Сроки

Реализация Touch ID-аутентификации с Keychain-хранилищем, обработкой всех error states и unit-тестами — 2–5 рабочих дней. Если нужна интеграция с существующим auth-модулем или миграция с UserDefaults на Keychain — добавляем 1–2 дня на аудит и рефакторинг.

Наши инженеры имеют 7+ лет опыта в iOS-разработке и сертификацию Apple. Свяжитесь с нами, чтобы заказать услугу.