@altergo/react-native-biometrics

React Native biometrics support for Android and iOS

Usage no npm install needed!

<script type="module">
  import altergoReactNativeBiometrics from 'https://cdn.skypack.dev/@altergo/react-native-biometrics';
</script>

README

React Native Biometrics

React Native Version

React Native Biometrics is a React Native library for authenticating users with biometrics. Inspired by react-native-fingerprint-scanner.

iOS

The usage of the TouchID is based on a framework, named Local Authentication

It provides a Default View that prompts the user to place a finger to the iPhone’s button for scanning

Android

Using an expandable Android Fingerprint API library, which combines Samsung and Meizu's official Fingerprint API

Samsung and Meizu's Fingerprint SDK supports most devices which system versions less than Android 6.0

Table of Contents

Installation

$ yarn add react-native-biometrics

Automatic Configuration

$ npx react-native link react-native-biometrics

Manual Configuration

iOS

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-biometrics and add ReactNativeBiometrics.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libReactNativeBiometrics.a to your project's Build PhasesLink Binary With Libraries
  4. Run your project

Android

  • Open up android/app/src/main/java/.../MainActivity.java
  • Add to the imports at the top of the file
import com.smrnvmkhl.biometrics.ReactNativeBiometricsPackage;
  • Add new ReactNativeBiometricsPackage() to the list returned by the getPackages() method
@Override
protected List<ReactPackage> getPackages() {
  return Arrays.<ReactPackage>asList(
      new MainReactPackage(),
      ...
      new ReactNativeBiometricsPackage()
  );
}
  • Append the following lines to android/settings.gradle:
include ':react-native-biometrics'
project(':react-native-biometrics').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-biometrics/android')
  • Insert the following lines inside the dependencies block in android/app/build.gradle
compile project(':react-native-biometrics')
  • Add rules to proguard rules file (default: android/app/proguard-rules.pro)

Permissions

Add the following permissions to their respective files:

AndroidManifest.xml

<uses-permission android:name="android.permission.USE_BIOMETRY" />

Info.plist

<key>NSFaceIDUsageDescription</key>
<string>$(PRODUCT_NAME) requires FaceID access to allows you quick and secure access</string>

API

| Name | Description | OS | |-|-|-| | authenticate | Starts biometrics authentication | Both | | getStatus | Get biometrics status code | Both | | release | Stops biometrics listener | Android |

authenticate

authenticate({
  onNotMatch: Function(code), // Callback calls when firngerprint not matched
  description: String, // Purpose of request for user authentication
  fallback: String, // Text of fallback button
  reuse: Number, // Number of seconds after unlock by biometrics
}): Promise<String>

getStatus

getStatus(): Promise<String>

release

release(): void

Codes

| Code | Description | OS | |-|-|-| | fingerprint | TouchID on iOS and Fingerprint on Android | Both | | face | FaceID on iOS | iOS | | success | Success authenticate | Both | | failed | The user failed to provide valid credentials | Both | | notSupported | Device does not support biometrics | Both | | notAvailable | Biometrics is not available on the device | Both | | notEnrolled | The user has no enrolled biometric identities | Both | | notMatch | No match | Android | | deviceLocked | Authentication was not successful, the device currently in a lockout | Android | | userCancel | The user tapped the cancel button in the authentication dialog | iOS | | fallback | The user tapped the fallback button in the authentication dialog, but no fallback is available for the authentication policy | iOS | | systemCancel | The system canceled authentication | iOS | | passcodeNotSet | A passcode isn’t set on the device | iOS | | unknown | Could not authenticate for an unknown reason | iOS |