Fingerprint plugin for Xamarin released

The first release of my Fingerprint plugin is now available.

Posted by Sven-Michael Stübe on March 18, 2016

I recently pushed the first stable version of my fingerprint plugin for xamarin to NuGet. It allows you to authenticate a user via the fingerprint sensor. The code is available on github. For me it’s just a project to play around with some interesting things (e.g. FAKE build scripts) and build something useful.

Give it a try

If you want to try it you have two options. You can simply clone the repository and build and execute the sample applications, or integrate it directly into your own app via NuGet NuGet NuGet MvvMCross.

Testing on Simulators

You don’t need to own a device with a fingerprint sensor to test this functionality. The simulators offer functionality to simulate fingerprint events.

iOS

Controlling the sensor on the iOS Simulator

With the Hardware menu you can

  • Toggle the enrolment status
  • Trigger valid ( M) and invalid ( N) fingerprint sensor events

Android

  • start the emulator (Android >= 6.0)
  • open the settings app
  • go to Security > Fingerprint, then follow the enrolment instructions
  • when it asks for touch
  • open command prompt
  • telnet 127.0.0.1 <emulator-id> (adb devices prints “emulator-<emulator-id>”)
  • finger touch 1
  • finger touch 1

Sending fingerprint sensor events for testing the plugin can be done with the telnet commands, too.

Note for Windows users: You have to enable telnet: Programs and Features > Add Windows Feature > Telnet Client

API

The API is described in the readme file of my github repository.

Support & Limitations

The supported platforms are:

  • Android >= 6.0
  • iOS >= 8.0
  • Windows UWP >= 10.0

The dialog on iOS is programmatically cancelable since iOS 9.0. All other platforms are “supported” with a default implementation where IsAvailable returns false and AuthenticateAsync returns a failed authentication result.

What next?

The two main future things are the following:

Samsung Pass integration

Before Android Marshmallow, Samsung had its own fingerprint technology / library called pass. I will create a binding for this library. I’ll try to create an modular architecture that allows to use the Android and the Samsung implementation or just one of them.

Feedback from James Montemagno

Thanks to James Montemagno for sending over some helpful feedback.

Namespaces

I think James is right with the suggestion to adjust the namespaces to fit more into his established Plugin world and that one of MvvMCross. Even in MvvMCross 4.0 the personal namespace parts (Cirrious) from Stuart got removed, because MvvMCross got alot input from the community. And think my plugin should follow.

Get rid of current activity resolver

The idea behind SetCurrentActivityResolver was to be independent from other plugins. If I do the namespace refactoring, I think it’s a logical consequence to use James’ Current Activity plugin as well. And it will reduce the setup effort as well.

More properties

It may be useful to implement more properties like HasSensor, IsEnrolled, that tell you the state of the fingerprint sensor in more detail than IsAvailable.


Background Photo by c0t0s0d0 / CC BY
Found a typo? Send me a pull request!