Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inconsistent Error Messages Between iOS and Android for Cancelled Biometry Operations #609

Open
AntoineThibi opened this issue Aug 28, 2023 · 2 comments

Comments

@AntoineThibi
Copy link
Contributor

Hello, I've come across an inconsistency in the error messages provided by react-native-keychain version 8.1.2 when a user cancels a biometry operation.

Steps to reproduce:

  1. Prompt the user for biometric authentication using react-native-keychain.
  2. On the biometric prompt, click "Cancel" or the equivalent option.

Expected Result:

A consistent error message for both iOS and Android.

Actual Result:

iOS: The error message is "User canceled the operation."
Android: The error message is "code: 13, msg: Cancel".

Possible Solutions:

It would be beneficial for the development community if there was consistency in the error messages across platforms. One of the following solutions could be considered:

Standardize the error message across both platforms.
Export the instance of the error in order to manipulate them more easily.

Additional Information:

React Native Version: 0.72.3
Device(s) Tested On: iPhone 13 / OnePlus6T
OS Version: iOS 16.1.1 / Android 11.1.2.2

@Catdaemon
Copy link

Catdaemon commented Sep 22, 2023

Yes this would be nice. There's also another case you need to handle where the user hit the back button on Android (there's no cancel button on the Samsung Knox implementation!). There might be more, but these are the ones we found on our array of test devices.

catch (e) {
    const stringifiedError = JSON.stringify(e)
    if (
      (e && typeof e === 'object' && 'code' in e && String(e.code) === '-128') || // iOS cancel
      stringifiedError.includes('code: 13') || // android "log out" pressed
      stringifiedError.includes('code: 10') // android cancel via back button
    ) {
      // Handle cancel
    }

@olie-chan
Copy link

For context I believe the error codes match up with this https://developer.android.com/reference/androidx/biometric/BiometricPrompt#constants_1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants