我已经在我的应用程序中实现了react-native-fingerprint-scanner
的运行Touch Id
。
现在,我想为两个平台的 Touch ID,人脸ID,密码进行身份验证
是否可以分别检查您的设备是否支持lock pattern
?
我也尝试使用react-native-touch-id
,但对于Face Id
来说却不起作用
在这两个平台(iOS / Android)上都可以实现这一目标吗?
参考:Link
答案 0 :(得分:1)
react-native-touch-id
应该同时适用于TouchID和FaceID。
如果faceid / touch不可用,iOS允许设备使用密码进行回退。这并不意味着如果touchid / faceid最初几次失败,它将恢复为密码,而是如果未注册后者,则它将使用密码。
您可以检查其是否首先受支持。
const optionalConfigObject = {
fallbackLabel: 'Show Passcode',
passcodeFallback: true,
}
TouchID.isSupported(optionalConfigObject)
.then(biometryType => {
// Success code
if (biometryType === 'FaceID') {
console.log('FaceID is supported.');
} else {
console.log('TouchID is supported.');
}
})
.catch(error => {
// Failure code
console.log(error);
});
答案 1 :(得分:0)
react-native-touch-id
也支持FaceId。但是,不再积极维护了。因此,他们建议使用expo本地身份验证。它可以在所有React本机应用程序中运行,无论是否具有EXPO。
要使用此功能,首先必须安装react-native-unimodules
。遵循本指南https://docs.expo.io/bare/installing-unimodules/
一旦安装,您可以通过
安装npm install expo-local-authentication
之后,我们可以使用它。
async function biometricAuth(){
const compatible = await LocalAuthentication.hasHardwareAsync();
if (compatible) {
const hasRecords = await LocalAuthentication.isEnrolledAsync();
if (hasRecords) {
const result = await LocalAuthentication.authenticateAsync();
return result;
}
}
}
它将自动在可用的本地身份验证(TouchID,FaceID,数字锁定,模式锁定等)之间进行选择,并对用户进行身份验证。
答案 2 :(得分:-1)
TouchID.isSupported()
.then(biometryType => {
// Success code
if (biometryType === 'FaceID') {
console.log('FaceID is supported.');
} else if (biometryType === 'TouchID'){
console.log('TouchID is supported.');
} else if (biometryType === true) {
// Touch ID is supported on Android
}
})
.catch(error => {
// Failure code if the user's device does not have touchID or faceID enabled
console.log(error);
});