如何在 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.

from the docs

您可以先看看是否支持。

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 和密码