Introduction

Xamarin.Forms code runs on multiple platforms - each of which has its own filesystem. This means that reading and writing files is most easily done using the native file APIs on each platform. Alternatively, embedded resources are a simpler solution to distribute data files with an app.
Plugin.Fingerprint
Authenticate a user via fingerprint, face id or any other biometric / local authentication method from a cross platform API.
Prerequisites
  • Visual Studio 2017 or later (Windows or Mac)

Setting up a Xamarin.Forms Project

Start by creating a new Xamarin.Forms project. You wíll learn more by going through the steps yourself.
Create a new or existing Xamarin forms(.Net standard) Project. With Android and iOS Platform.
Nuget
Install the following Nuget from Nuget Manager In your Visual Studio.
  • Plugin.Fingerprint
iOS Setup
Add NSFaceIDUsageDescription to your Info.plist to describe the reason your app uses Face ID. Otherwise the App will crash when you start a Face ID authentication on iOS 11.3+.
<key>NSFaceIDUsageDescription</key>
<string>Need your face to unlock secrets!</string>
Android Setup
Request the permission in AndroidManifest.xml
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
Add the below code in MainActivity.cs OnCreate Method.
  1. CrossFingerprint.SetCurrentActivityResolver(() => this);
Install Android X Migration
Since version 2, this plugin uses Android X. You have to install Xamarin.AndroidX.Migration in your Android project.
FingerPrint Authentication
  1. private async Task AuthenticateAsync(string reason, string cancel = null, string fallback = null, string tooFast = null)
  2. {
  3. _cancel = false ? new CancellationTokenSource(TimeSpan.FromSeconds(10)) : new CancellationTokenSource();
  4. var dialogConfig = new AuthenticationRequestConfiguration("My App", reason)
  5. {
  6. CancelTitle = cancel,
  7. FallbackTitle = fallback,
  8. AllowAlternativeAuthentication = true,
  9. ConfirmationRequired = false
  10. };
  11. dialogConfig.HelpTexts.MovedTooFast = tooFast;
  12. var result = await Plugin.Fingerprint.CrossFingerprint.Current.AuthenticateAsync(dialogConfig, _cancel.Token);
  13. await SetResultAsync(result);
  14. }
Enable AlternativeAuthentication
If you need to allow alternate authentication such as Pin, Pattern and password set AlternativeAuthentication=true
  1. var dialogConfig = new AuthenticationRequestConfiguration("My App", reason)
  2. {
  3. CancelTitle = cancel,
  4. FallbackTitle = fallback,
  5. AllowAlternativeAuthentication = true,
  6. ConfirmationRequired = false
  7. };
Full code
  1. protected override async void OnAppearing()
  2. {
  3. base.OnAppearing();
  4. var authType= await Plugin.Fingerprint.CrossFingerprint.Current.GetAuthenticationTypeAsync();
  5. if(authType==AuthenticationType.Fingerprint)
  6. {
  7. lblAuthenticationType.Text = "Auth Type: " + authType;
  8. await AuthenticateAsync("Authendicate with Touch ID");
  9. }
  10. }
  11. private async Task AuthenticateAsync(string reason, string cancel = null, string fallback = null, string tooFast = null)
  12. {
  13. _cancel = false ? new CancellationTokenSource(TimeSpan.FromSeconds(10)) : new CancellationTokenSource();
  14. var dialogConfig = new AuthenticationRequestConfiguration("My App", reason)
  15. {
  16. CancelTitle = cancel,
  17. FallbackTitle = fallback,
  18. AllowAlternativeAuthentication = true,
  19. ConfirmationRequired = false
  20. };
  21. dialogConfig.HelpTexts.MovedTooFast = tooFast;
  22. var result = await Plugin.Fingerprint.CrossFingerprint.Current.AuthenticateAsync(dialogConfig, _cancel.Token);
  23. await SetResultAsync(result);
  24. }
Run
I hope you have understood and learned how to implement fingerprint, password and facelock authentication in your XamarinApp.
Thanks for reading. Please share your comments and feedback. Happy Coding :)