How to check support of Touch ID, Face Id ,Password and pattern lock in React-Native

后端 未结 3 1595
有刺的猬
有刺的猬 2020-12-18 23:08

I have implemented a react-native-fingerprint-scanner, it\'s working for Touch Id.

Now I wanted to add authentication for Touch ID,

相关标签:
3条回答
  • 2020-12-18 23:27

    react-native-touch-id supports FaceId too. But, is not actively maintained anymore. So, they recommend to use expo local authentication. It works in all react native applications regardless of expo or not.

    To use this, first you have to install react-native-unimodules. follow this guide https://docs.expo.io/bare/installing-unimodules/

    Once it is installed you can install it by

    npm install expo-local-authentication
    

    After that, we can use it.

    async function biometricAuth(){
      const compatible = await LocalAuthentication.hasHardwareAsync();
      if (compatible) {
        const hasRecords = await LocalAuthentication.isEnrolledAsync();
        if (hasRecords) {
          const result = await LocalAuthentication.authenticateAsync();
          return result;
        }
      }
    }
    
    

    It will automatically choose between available local authentication (TouchID, FaceID, Number lock, Pattern lock etc) and authenticate the user.

    0 讨论(0)
  • 2020-12-18 23:30
    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);
          });
    
    0 讨论(0)
  • 2020-12-18 23:44

    react-native-touch-id should work for both TouchID and 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

    You can check to see if its supported first.

    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 讨论(0)
提交回复
热议问题