npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@nativescript/fingerprint-auth

v8.1.0

Published

A biometric authentication plugin for use in NativeScript apps

Downloads

273

Readme

@nativescript/fingerprint-auth

ns plugin add @nativescript/fingerprint-auth

Then open App_Resources/Android/app.gradle and look for minSdkVersion. If that's set to a version less than 23, add this overrideLibrary line to App_Resources/Android/src/main/AndroidManifest.xml:

  <uses-sdk
      android:minSdkVersion="17"
      android:targetSdkVersion="__APILEVEL__"
      tools:overrideLibrary="com.jesusm.kfingerprintmanager"/>

API

Want a nicer guide than these raw code samples? Read Nic Raboy's blog post about this plugin.

available

JavaScript

var fingerprintAuthPlugin = require('@nativescript/fingerprint-auth');
var fingerprintAuth = new fingerprintAuthPlugin.FingerprintAuth();

fingerprintAuth.available().then(function (avail) {
	console.log('Available? ' + avail);
});

TypeScript

import { FingerprintAuth, BiometricIDAvailableResult } from "@nativescript/fingerprint-auth";

class MyClass {
  private fingerprintAuth: FingerprintAuth;

  constructor() {
    this.fingerprintAuth = new FingerprintAuth();
  }

  this.fingerprintAuth.available().then((result: BiometricIDAvailableResult) => {
    console.log(`Biometric ID available? ${result.any}`);
    console.log(`Touch? ${result.touch}`);
    console.log(`Face? ${result.face}`);
  });
}

verifyFingerprint

Note that on the iOS simulator this will just resolve().

fingerprintAuth
	.verifyFingerprint({
		title: 'Android title', // optional title (used only on Android)
		message: 'Scan yer finger', // optional (used on both platforms) - for FaceID on iOS see the notes about NSFaceIDUsageDescription
	})
	.then((enteredPassword?: string) => {
		if (enteredPassword === undefined) {
			console.log('Biometric ID OK');
		} else {
			// compare enteredPassword to the one the user previously configured for your app (which is not the users system password!)
		}
	})
	.catch((err) => console.log(`Biometric ID NOT OK: ${JSON.stringify(err)}`));

verifyFingerprintWithCustomFallback (iOS only, falls back to verifyFingerprint on Android)

Instead of falling back to the default Passcode UI of iOS you can roll your own. Just show that when the error callback is invoked.

fingerprintAuth
	.verifyFingerprintWithCustomFallback({
		message: 'Scan yer finger', // optional, shown in the fingerprint dialog (default: 'Scan your finger').
		fallbackMessage: 'Enter PIN', // optional, the button label when scanning fails (default: 'Enter password').
		authenticationValidityDuration: 10, // optional (used on Android, default 5)
	})
	.then(
		() => {
			console.log('Fingerprint was OK');
		},
		(error) => {
			// when error.code === -3, the user pressed the button labeled with your fallbackMessage
			console.log('Fingerprint NOT OK. Error code: ' + error.code + '. Error message: ' + error.message);
		}
	);

Face ID (iOS)

iOS 11 added support for Face ID and was first supported by the iPhone X. The developer needs to provide a value for NSFaceIDUsageDescription, otherwise your app may crash.

You can provide this value (the reason for using Face ID) by adding something like this to app/App_Resources/ios/Info.plist:

  <key>NSFaceIDUsageDescription</key>
  <string>For easy authentication with our app.</string>

Security++ (iOS)

Since iOS9 it's possible to check whether or not the list of enrolled fingerprints changed since the last time you checked it. It's recommended you add this check so you can counter hacker attacks to your app. See this article for more details.

So instead of checking the fingerprint after available add another check. In case didFingerprintDatabaseChange returns true you probably want to re-authenticate your user before accepting valid fingerprints again.

fingerprintAuth.available().then((avail) => {
	if (!avail) {
		return;
	}
	fingerprintAuth.didFingerprintDatabaseChange().then((changed) => {
		if (changed) {
			// re-auth the user by asking for his credentials before allowing a fingerprint scan again
		} else {
			// call the fingerprint scanner
		}
	});
});

Changelog

  • 6.2.0 Fixed a potential bypass on iOS.
  • 6.1.0 Fixed potentioal bypasses on Android.
  • 6.0.3 Android interfered with other plugins' Intents.
  • 6.0.2 Plugin not working correctly on iOS production builds / TestFlight.
  • 6.0.1 Fixed a compatibility issues with NativeScript 3.4.
  • 6.0.0 Allow custom UI on Android.
  • 5.0.0 Better Face ID support. Breaking change, see the API for available.
  • 4.0.1 Aligned with the official NativeScript plugin seed. Requires NativeScript 3.0.0+. Thanks, @angeltsvetkov!
  • 4.0.0 Converted to TypeScript. Changed the error response type of verifyFingerprintWithCustomFallback.
  • 3.0.0 Android support added. Renamed nativescript-touchid to nativescript-fingerprint-auth (sorry for any inconvenience!).
  • 2.1.1 Xcode 8 compatibility - requires NativeScript 2.3.0+.
  • 2.1.0 Added didFingerprintDatabaseChange for enhanced security.
  • 2.0.0 Added verifyFingerprintWithCustomFallback, verifyFingerprint now falls back to the passcode.
  • 1.2.0 You can now use the built-in passcode interface as fallback.
  • 1.1.1 Added TypeScript definitions.
  • 1.1.0 Added Android platform which will always return false for touchid.available.

License

Apache License Version 2.0