iOS Touch ID Biometric Authentication

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
iOS Touch ID Biometric Authentication
Simple
~1 business day
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Developing Touch ID Biometric Authorization in iOS App

Touch ID is older than Face ID, but still relevant: iPhone SE 3rd gen, iPad mini 6, iPad 10th gen with side sensor — all active devices in real user base. LAContext is the same, but behavior differs in details that cause production issues.

Touch ID specifics vs Face ID

Main difference — multi-finger registration. User can have up to five fingerprints. With biometryType == .touchID and successful authentication, you don't know which finger was used — API doesn't provide this. For most scenarios normal, but in enterprise apps with audit logs sometimes want to log "which device was used". Touch ID doesn't allow this by design.

Second difference — fallback degradation speed. Wet fingers, gloves, cuts — Touch ID more often goes to fallback than Face ID. This means .userFallback must be handled well, not just show "Enter password" button without explanation.

Common error: developer checks biometryType once at startup and caches result. User adds new fingerprint in settings — cache stale, Keychain record with .biometryCurrentSet invalidated, app crashes with errSecItemNotFound (-25300) when trying to get token. Correct: create new LAContext before each authentication attempt and don't store context longer than one transaction.

Implementation

Policy same — .deviceOwnerAuthenticationWithBiometrics. But for Touch ID especially important localizedFallbackTitle parameter on LAContext. If set empty string "" — fallback button hidden completely. If not set — shows "Enter Password" (system text). Set custom: "Login with PIN code" or "Use app password" — depending on what you implemented.

Secret storage in Keychain under Touch ID:

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

Flag .privateKeyUsage added if secret used for crypto operations (request signing). For simple token storage .biometryCurrentSet enough.

Side Touch ID (iPad, iPhone SE)

On iPad mini 6 and iPad 10th gen sensor built into power button. Unlock animation different — user applies finger to side button, not bottom. This affects how you position UI hints. biometryType returns .touchID in both cases — no API differences, only UX copywriting.

Testing and edge cases

Mandatory test:

  • Fingerprint not recognized three times → lockout → correct fallback transition
  • Touch ID disabled in device settings → .biometryNotAvailable
  • Passcode not set → canEvaluatePolicy returns false with .passcodeNotSet error
  • App goes to background while waiting for Touch ID → .systemCancel

On simulator emulate via Features > Touch ID > Matching Touch / Non-matching Touch.

Timeframe

Touch ID authentication implementation with Keychain storage, all error states handling, and unit tests — 2–5 business days. If need integration with existing auth module or migration from UserDefaults to Keychain — add 1–2 days for audit and refactoring.