@altergo/react-native-biometrics

1.0.0 • Public • Published

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

Package Sidebar

Install

npm i @altergo/react-native-biometrics

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

36.1 kB

Total Files

28

Last publish

Collaborators