smstuebe / xamarin-fingerprint

Xamarin and MvvMCross plugin for authenticate a user via fingerprint sensor
Microsoft Public License
490 stars 115 forks source link

Migrate to BiometricPrompt from FingerprintManager #136

Closed AndreaMinato closed 4 years ago

AndreaMinato commented 5 years ago

Fingerprint manager has been deprecated with API Level 28 and should be replaced by BiometricPrompt in order to provide more consistent behavior and UI between apps. This will benefit also the package since it would enable bio-metrics other than Fingerprint.

This class was deprecated in API level 28. See BiometricPrompt which shows a system-provided dialog upon starting authentication. In a world where devices may have different types of biometric authentication, it's much more realistic to have a system-provided authentication dialog since the method may vary by vendor/device.

FingerprintManager BiometricPrompt

I don't believe that the steps are necessary but i want to follow the template

Steps to reproduce

  1. Followed README.md procedure

  2. Opened the Fingerprint dialog

  3. Authenticated

Expected behavior

A system UI dialog should appear

Actual behavior

It appear the default provided dialog

Crashlog

No crash, just a request

Configuration

Version of the Plugin: 1.4.9

Platform: Android9.0

Device: Nokia 7 Plus

smsissuechecker commented 5 years ago

Hi @AndreaMinato,

I'm the friendly issue checker. Thanks for using the issue template :star2: I appreciate it very much. I'm sure, the maintainers of this repository will answer, soon.

smstuebe commented 5 years ago

Is already on a feature branch. the problem is backward compatibility, because Xamarin doesn't support android-x yet :< I'll have a look

AndreaMinato commented 5 years ago

I see that they are working on an androidX implementation https://github.com/xamarin/AndroidSupportComponents/tree/AndroidX#android-support---androidx-roadmap

But I wasn't able to find any clue on the roadmap completion nor any ETA.

Also I'm afraid that migrating to AndroidX will force developer to replace every Support Libraries.

What are your thoughts?

smstuebe commented 5 years ago

Yes they are working heavily on it. I know something, but can't say it. androidx is the future. But I think in the beginning nobody will be forced. I'll see how to handle this in the meantime. Translate the dialog from the android-x Java to C#. Should not be too much work

kspearrin commented 4 years ago

I got this email from Google today:

I hope all is well with you! Your apps (xxxxxxxxxxx) have recently been identified by Google as part of a list of top apps that have not yet implemented the BiometricPrompt API introduced in Android P. We are reaching out to ensure that you are aware that with the introduction of the next wave of Android devices starting in Q4 2019, your customers may have fundamental issues logging into your app across millions of devices unless you update your app to support the BiometricPrompt API.

To address this urgent issue, we recommend the following resources to help get your app up-to-date: https://android.googlesource.com/platform/frameworks/support/+/androidx-master-dev/samples/BiometricDemos/ https://developer.android.com/reference/android/hardware/biometrics/BiometricPrompt https://android-developers.googleblog.com/2018/06/better-biometrics-in-android-p.html

We have lined up technical resources and support to help you address any technical issues or questions you may have as you start migrating to the new API. Because of the launch of new devices happening in Q4 2019, we’re asking that partners address this issue by October 1, 2019.

BACKGROUND In the last 1-2 years, there has been a large shift across Android OEMs utilizing new forms of biometric authentication including in-display fingerprint sensors and 3D face authentication systems. Previously, when discrete fingerprint sensors were the only forms of authentication in Android, developers could call FingerprintManager and provide their own custom UI that would work across all devices (since the fingerprint sensor was a common hardware experience). With in-display fingerprint and face authentication, however, developers would need to provide a custom UI for each and every device implementation, which is not scalable.

To address this, the BiometricPrompt API was introduced in Android P, which shifted the biometric experience to a system provided dialog, with a common set of text field inputs and configurations provided by developers. Utilizing this, developers can simply call BiometricPrompt for their various payment / sign-in experiences, and have universal support across all Android devices for whatever the native biometric is on the device.

Many app developers are still utilizing FingerprintManager API. Unless app developers adopt the new BiometricPrompt API (introduced in P), their authentication experiences will not work on devices leveraging new forms of biometrics that will begin launching in Q4 2019. This means that apps will have a significant increase in friction for sign-ins, transactions, and purchases across some of the biggest Android OEMs.

tranb3r commented 4 years ago

Now that androidx is in preview for xamarin, is it possible to do the migration to biometricprompt ?

smstuebe commented 4 years ago

@tranb3r I already had a look. Not all android-x packages are in the preview :( I already forked the android-x repo...

tranb3r commented 4 years ago

@smstuebe What exactly is missing in android-x, and is somebody from the xamarin team aware of it / working on it already ? Can we expect a new release of the plugin soon ? Also, if you have more information, could you please clarify your plans for the future of this plugin ?

smstuebe commented 4 years ago

@tranb3r the BiometricPrompt android-x packages was missing the last time I had a look. I think I'll release an alpha with biometric prompt without android-x and then proceed

tranb3r commented 4 years ago

@smstuebe Any progress?

lechuckcaptain commented 4 years ago

Moving to BiometricPrompt seems more important now that new released Google's Pixel 4 doesn't have any fingerprint scanner at all. Any idea how and if this will be supported soon?

joshkautz commented 4 years ago

I'm looking forward to using BiometricPrompt for exactly the same reason that @lechuckcaptain mentioned - Google Pixel 4 is out and uses different types of authentication. Thanks for the great tool @smstuebe !!!

smstuebe commented 4 years ago

@tranb3r @joshykautz @lechuckcaptain @kspearrin @AndreaMinato disucssion goes on here: https://github.com/smstuebe/xamarin-fingerprint/issues/151