如何检查React-Native中对Touch ID、Face Id、密码和图案锁定的支持

问题描述 投票:0回答:5

我正在使用

react-native-fingerprint-scanner
npm 为应用程序实现生物识别身份验证,使用此 npm 我无法确保设备是否支持生物识别身份验证,仅适用于
touch id
为我工作。

如何实现

Face Id
Passcode
身份验证?

已使用

react-native-touch-id
进行验证,但它对我不起作用。

有没有办法实现iOS和Android两个平台的认证?

参考:链接

enter image description here

enter image description here

react-native touch-id face-id passcode android-biometric
5个回答
3
投票

react-native-touch-id
也支持FaceId。但是,不再积极维护。因此,他们建议使用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、数字锁定、图案锁定等)并对用户进行身份验证。


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);
  });

0
投票

在此输入图像描述 // 使用此包 import RNBiometrics from "react-native-simple-biometrics";这适用于 android 和 ios 的 touchId 和密码


0
投票

react-native-touch-id
适用于 TouchID 和 FaceID

我已经更新了存储库,所以现在如果您想在面容 ID 或触摸 ID 失败后使用密码,系统将提示您输入 PIN 码(仅适用于 ios)查看我的存储库

https://github.com/avaiyakapil/react-native-touch-id

import TouchID from 'react-native-touch-id';

TouchID.authenticate('Authentication')
     .then(success => {
              // Success code
            })
            .catch(error => {
              // Failure code
            });

-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);
          });
© www.soinside.com 2019 - 2024. All rights reserved.