React Native biometrics support for Android and iOS
npm install @altergo/react-native-biometrics
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
- Installation
- API
- Constants
``console`
$ yarn add react-native-biometrics
`console`
$ npx react-native link react-native-biometrics
iOS
1. In XCode, in the project navigator, right click Libraries ➜ Add Files to [your project's name]node_modules
2. Go to ➜ react-native-biometrics and add ReactNativeBiometrics.xcodeprojlibReactNativeBiometrics.a
3. In XCode, in the project navigator, select your project. Add to your project's Build Phases ➜ Link 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 filejava`
import com.smrnvmkhl.biometrics.ReactNativeBiometricsPackage;new ReactNativeBiometricsPackage()
- Add to the list returned by the getPackages() method`java`
@Override
protected List
return Arrays.
new MainReactPackage(),
...
new ReactNativeBiometricsPackage()
);
}android/settings.gradle
- Append the following lines to :`gradle`
include ':react-native-biometrics'
project(':react-native-biometrics').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-biometrics/android')android/app/build.gradle
- Insert the following lines inside the dependencies block in `gradle`
compile project(':react-native-biometrics')android/app/proguard-rules.pro
- Add rules to proguard rules file (default: )
Add the following permissions to their respective files:
AndroidManifest.xml
`xml`
Info.plist
`plist`
| Name | Description | OS |
|-|-|-|
| authenticate | Starts biometrics authentication | Both |
| getStatus | Get biometrics status code | Both |
| release | Stops biometrics listener | Android |
javascript
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
`$3
`javascript
getStatus(): Promise
`$3
`javascript
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 |