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 .
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
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!