12

我已经实施了一个react-native-fingerprint-scanner,它正在为Touch Id.

现在我想为两个平台添加 Touch ID、Face ID、Passcode 的身份验证

有什么方法可以检查您的设备是否支持。另外,我尝试过使用react-native-touch-id,但它不适用于Face Idandroid。

有没有办法在两个平台(iOS/Android)上实现这一点?

参考:链接

在此处输入图像描述

在此处输入图像描述

4

3 回答 3

2

react-native-touch-id也支持 FaceId。但是,不再积极维护。因此,他们建议使用 expo 本地身份验证。它适用于所有反应原生应用程序,无论是否博览会。

要使用它,首先您必须安装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、数字锁、图案锁等)之间进行选择并对用户进行身份验证。

于 2020-11-20T12:05:00.217 回答
0

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);
  });
于 2019-10-03T18:44:13.797 回答
-2
//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);
          });
于 2020-11-20T10:54:02.053 回答