@altergo/react-native-biometrics
v1.0.0
Published
React Native biometrics support for Android and iOS
Downloads
3
Maintainers
Readme
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, namedLocal Authentication
It provides a
Default View
that prompts the user to place a finger to theiPhone
’s button for scanning
Android
Using an expandable
Android Fingerprint API
library, which combines Samsung and Meizu's officialFingerprint API
Samsung
andMeizu
'sFingerprint SDK
supports most devices which system versions less thanAndroid 6.0
Table of Contents
Installation
$ yarn add react-native-biometrics
Automatic Configuration
$ npx react-native link react-native-biometrics
Manual Configuration
iOS
- In XCode, in the project navigator, right click
Libraries
➜Add Files to [your project's name]
- Go to
node_modules
➜react-native-biometrics
and addReactNativeBiometrics.xcodeproj
- In XCode, in the project navigator, select your project. Add
libReactNativeBiometrics.a
to your project'sBuild Phases
➜Link Binary With Libraries
- 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 thegetPackages()
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 |