Open DanielLeushuis opened 5 years ago
I am also facing the same issue. Its working fine in iPhone6 OS version 10 but not in iPhone6+ OS version 12
Thanks for adding information. I can only test iOS 11+ since my Capacitor is configured like that now.
The docs (https://developer.apple.com/documentation/localauthentication/lapolicy/lapolicydeviceownerauthenticationwithbiometrics?language=objc) says 'To let the system handle the fallback option by asking for the device passcode (in iOS or watchOS) or the user’s password (in macOS), use the LAPolicyDeviceOwnerAuthentication policy instead.'
I will try changing LAPolicyDeviceOwnerAuthenticationWithBiometrics to LAPolicyDeviceOwnerAuthentication in TouchID.m. I will report back another day.
It had something to do with LAPolicyDeviceOwnerAuthentication but not by simply replacing the policies in the TouchID.m file.
This repo fixes the issues described above: https://github.com/didux-io/cordova-plugin-touch-id. I have also requested a pull for this repo.
Package on npm: https://www.npmjs.com/package/@didux-io/cordova-plugin-touch-id
Behavior now:
I highly recommend using this package aswell: https://ionicframework.com/docs/native/pin-check with https://ionicframework.com/docs/native/open-native-settings
That library will check if the user has no passcode and provides you ways to navigate the user to set one, example code to use with that library:
import { PinCheck } from '@ionic-native/pin-check/ngx';
import { TouchID } from '@ionic-native/touch-id/ngx';
import { Platform } from '@ionic/angular';
.....
pinSetup = true;
constructor(
private platform: Platform,
private pinCheck: PinCheck,
private touchId: TouchID
) {
}
openSecuritySettings() {
if (this.platform.is('android')) {
this.openNativeSettings.open('security');
} else if (this.platform.is('ios')) {
this.openNativeSettings.open('touch');
}
}
checkLockScreenEnabled() {
this.pinCheck.isPinSetup().then(
() => {
this.pinSetup = true;
}, () => {
this.pinSetup = false;
}
);
}
.....
When Touch ID fails (wrong fingerprint) the passcode option does not appear. The text only shakes and shows the 'Cancel' button.
I Imported the module:
Injected the module into the constructor:
And used the 'verifyFingerprint' method:
I have Touch ID and a passcode setup on the (real) device. Am I missing a step?