如何在 React-Native 中查看对 Touch ID、Face Id、密码和图案锁定的支持
How to check support of Touch ID, Face Id ,Password and pattern lock in React-Native
我已经实现了 react-native-fingerprint-scanner
,它适用于 Touch Id
。
现在我想为两个平台Touch ID、Face Id、密码添加身份验证
有什么方法可以检查您的设备是否支持。另外,我试过使用 react-native-touch-id
但它不适用于 android.
上的 Face Id
有什么方法可以在两个平台上实现这个(iOS/Android)?
参考:Link
react-native-touch-id
应该适用于 TouchID 和 FaceID。
iOS allows the device to fall back to using the passcode, if faceid/touch is not available. this does not mean that if touchid/faceid fails the first few times it will revert to passcode, rather that if the former are not enrolled, then it will use the passcode.
您可以先看看是否支持。
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);
});
//this code is for checking whether touch id is supported or not
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);
});
react-native-touch-id
也支持 FaceId。但是,不再主动维护。因此,他们建议使用 expo local authentication。无论是否有 expo,它都适用于所有 React Native 应用程序。
要使用它,首先您必须安装 react-native-unimodules
。遵循本指南 https://docs.expo.io/bare/installing-unimodules/
安装完成后,您可以通过
安装
npm install expo-local-authentication
将以下行添加到您的导入中
import LocalAuthentication from '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、数字锁、图案锁等)并对用户进行身份验证。
enter image description here
// 使用这个包 import RNBiometrics from "react-native-simple-biometrics";这适用于 android 和 ios
的 touchId 和密码
我已经实现了 react-native-fingerprint-scanner
,它适用于 Touch Id
。
现在我想为两个平台Touch ID、Face Id、密码添加身份验证
有什么方法可以检查您的设备是否支持。另外,我试过使用 react-native-touch-id
但它不适用于 android.
Face Id
有什么方法可以在两个平台上实现这个(iOS/Android)?
参考:Link
react-native-touch-id
应该适用于 TouchID 和 FaceID。
iOS allows the device to fall back to using the passcode, if faceid/touch is not available. this does not mean that if touchid/faceid fails the first few times it will revert to passcode, rather that if the former are not enrolled, then it will use the passcode.
您可以先看看是否支持。
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);
});
//this code is for checking whether touch id is supported or not
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);
});
react-native-touch-id
也支持 FaceId。但是,不再主动维护。因此,他们建议使用 expo local authentication。无论是否有 expo,它都适用于所有 React Native 应用程序。
要使用它,首先您必须安装 react-native-unimodules
。遵循本指南 https://docs.expo.io/bare/installing-unimodules/
安装完成后,您可以通过
安装npm install expo-local-authentication
将以下行添加到您的导入中
import LocalAuthentication from '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、数字锁、图案锁等)并对用户进行身份验证。
enter image description here // 使用这个包 import RNBiometrics from "react-native-simple-biometrics";这适用于 android 和 ios
的 touchId 和密码