Hi everyone,
I'm using the Touch ID Plugin (v3.3.11) in a native mobile app built with OutSystems 11.
I understand that when Face ID or Touch ID fails, the OS may fall back to the device passcode screen.
I want to ask specifically:
If I directly call TouchID() without checking biometric availability, and:
- Biometric is not available,
- Or Face ID / Touch ID is turned off,
- Or no device passcode is set,
→ What exactly will happen?
Will the plugin fail silently, throw an error, or still display the system passcode screen (for both iOS and Android)?
(Sorry, I can't test these edge cases at the moment, so I hope someone can share their experience with these scenarios.)
Thanks a lot in advance!
Hi Kimberly,
If you skip isAvailable() and directly call TouchID actions when biometric is unavailable, disabled, or device passcode is not set, then:
iOS: The plugin will throw an error (via failure callback or rejected Promise). It will not fall back to device passcode unless biometric is configured.
Android: Behavior may vary by device and OS version, but generally it fails immediately with an error if no biometrics are set up. It does not show a passcode fallback unless explicitly supported (rare).
Breaking down the default behaviors below,
iOS:
When calling TouchID.authenticate() without checking availability:
1.If biometrics are disabled or not set up:
No biometric UI is shown.
You’ll get an error, typically:
Touch ID not available
Or similar codes like LAErrorTouchIDNotAvailable, LAErrorBiometryNotAvailable.
2. If device passcode is not set:
Touch ID / Face ID cannot work unless a passcode is set.
So, TouchID() call will fail, and no fallback UI appears.
iOS enforces this: you must have a passcode to enable biometrics.
3. Will it fall back to device passcode?
Only if biometrics are configured, and the user fails multiple biometric attempts.
It will then show the system passcode prompt as fallback (standard iOS behavior).
But if biometrics are not set up at all, it will not trigger fallback to passcode.
Android:
Android is more fragmented, but here’s the usual behavior:
1. If biometric is not available, or not enrolled:
The plugin throws an error like:
Biometric authentication is not available
Biometric enrollment required
Like iOS, Android usually requires secure lock screen (PIN, pattern, password) to allow biometric use.
Without that, the plugin fails with error, and no fallback is shown.
3. Does Android fallback to passcode?
Not by default.
The plugin you're using (Touch ID Plugin v3.3.11) does not support fallback to device PIN/password screen on Android.
You would need to use Android’s BiometricPrompt API (natively or via a plugin that supports it) for this behavior.