cordova-plugin-fingerprint-aio icon indicating copy to clipboard operation
cordova-plugin-fingerprint-aio copied to clipboard

Success/Failure callbacks not called if app is paused and resumed whilst prompt is shown

Open TomSeldon opened this issue 6 years ago • 2 comments

Bug report

Description

On Android (not tested on iOS), if the fingerprint prompt is opened, and then the app paused and resumed, the prompt is still shown but doesn't call success/failure handlers after interacting with it.

The prompt needs to be cancelled and re-shown in order for the handlers to be called.

  • What did you do?

    • Use an Android device with a fingerprint sensor
    • Call show with client ID, secret, and disable backup options
    • Minimise the app
    • Resume/reopen the app
    • (with the prompt still shown) - try to use my fingerprint, or press cancel
  • What did happen?

    • On pressing cancel: The prompt disappears
    • On verifying my fingerprint: The prompt shows a success message and then disappears
    • On entering an incorrect fingerprint: The prompt shows an error message, and after a number of attempts says that fingerprint auth is no longer available
    • In all cases, it appears to behave correctly except it does not call the success or failure handlers.

Code to replicate

(I've omitted any isAvailable checks for brevity)

const onSuccess = () => console.log('fingerprint verified');
const onFailure = error => console.error(error);

Fingerprint.show({
  clientId: 'some-id',
  clientSecret: 'some-secret',
  disableBackup: true
}, onSuccess, onFailure);

Following the replication steps above, neither success nor failure callbacks are called if the app is paused and then resumed whilst the prompt is showing.

Environment

  • Plugin version 1.4.1
  • Build environment:
cordova info
Collecting Data...


Node version: v8.12.0

Cordova version: 8.1.1

Config.xml file:

<?xml version='1.0' encoding='utf-8'?>
<widget id="REDACTED" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>REDACTED</name>
    <description>REDACTED</description>
    <author email="REDACTED" href="REDACTED">REDACTED</author>
    <content src="index.html" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <preference name="ScrollEnabled" value="false" />
    <preference name="android-minSdkVersion" value="21" />
    <preference name="BackupWebStorage" value="none" />
    <preference name="SplashMaintainAspectRatio" value="true" />
    <preference name="FadeSplashScreenDuration" value="300" />
    <preference name="SplashShowOnlyFirstTime" value="false" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="3000" />
    <platform name="android">
        <allow-intent href="market:*" />
        <preference name="android-manifest/application/@android:allowBackup" value="false" />
        <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
        <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
        <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
        <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
        <icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
        <icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
        <splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
        <splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
        <splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
        <splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
        <splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
        <splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
        <splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
        <splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
        <splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
        <splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
        <splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
        <splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
        <icon height="57" src="resources/ios/icon/icon.png" width="57" />
        <icon height="114" src="resources/ios/icon/[email protected]" width="114" />
        <icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
        <icon height="80" src="resources/ios/icon/[email protected]" width="80" />
        <icon height="120" src="resources/ios/icon/[email protected]" width="120" />
        <icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
        <icon height="100" src="resources/ios/icon/[email protected]" width="100" />
        <icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
        <icon height="120" src="resources/ios/icon/[email protected]" width="120" />
        <icon height="180" src="resources/ios/icon/[email protected]" width="180" />
        <icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
        <icon height="144" src="resources/ios/icon/[email protected]" width="144" />
        <icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
        <icon height="152" src="resources/ios/icon/[email protected]" width="152" />
        <icon height="167" src="resources/ios/icon/[email protected]" width="167" />
        <icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
        <icon height="58" src="resources/ios/icon/[email protected]" width="58" />
        <icon height="87" src="resources/ios/icon/[email protected]" width="87" />
        <icon height="1024" src="resources/ios/icon/icon-1024.png" width="1024" />
        <splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
        <splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
        <splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
        <splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
        <splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
        <splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
        <splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
        <splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
        <splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
        <splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
        <splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
        <splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
        <splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
    </platform>
    <plugin name="cordova-plugin-whitelist" spec="1.3.3" />
    <plugin name="cordova-plugin-statusbar" spec="2.4.2" />
    <plugin name="cordova-plugin-device" spec="2.0.2" />
    <plugin name="cordova-plugin-splashscreen" spec="5.0.2" />
    <plugin name="cordova-plugin-ionic-webview" spec="^2.0.0" />
    <plugin name="cordova-plugin-ionic-keyboard" spec="^2.0.5" />
    <plugin name="cordova-plugin-safariviewcontroller" spec="1.5.4" />
    <plugin name="cordova-plugin-customurlscheme" spec="4.3.0">
        <variable name="URL_SCHEME" value="REDACTED" />
        <variable name="ANDROID_SCHEME" value="REDACTED" />
        <variable name="ANDROID_HOST" value="REDACTED" />
        <variable name="ANDROID_PATHPREFIX" value="REDACTED" />
    </plugin>
    <plugin name="cordova-plugin-nativestorage" spec="2.3.2" />
    <plugin name="cordova-plugin-vibration" spec="3.1.0" />
    <plugin name="cordova-plugin-touch-id" spec="3.4.0">
        <variable name="FACEID_USAGE_DESCRIPTION" value="For easy authentication" />
    </plugin>
    <plugin name="cordova-plugin-fingerprint-aio" spec="1.4.1">
        <variable name="FACEID_USAGE_DESCRIPTION" value=" " />
    </plugin>
    <allow-navigation href="http://192.168.1.70:8100" sessionid="c56add56" />
    <engine name="android" spec="7.0.0" />
    <engine name="ios" spec="4.5.5" />
    <engine name="browser" spec="5.0.4" />
</widget>


Plugins:

cordova-plugin-add-swift-support,cordova-plugin-customurlscheme,cordova-plugin-device,cordova-plugin-fingerprint-aio,cordova-plugin-inappbrowser,cordova-plugin-ionic-keyboard,cordova-plugin-ionic-webview,cordova-plugin-nativestorage,cordova-plugin-safariviewcontroller,cordova-plugin-splashscreen,cordova-plugin-statusbar,cordova-plugin-touch-id,cordova-plugin-vibration,cordova-plugin-whitelist

Android platform:

*************************************************************************
The "android" command is deprecated.
For manual SDK, AVD, and project management, please use Android Studio.
For command-line tools, use tools/bin/sdkmanager and tools/bin/avdmanager
*************************************************************************
Running /Users/REDACTED/Library/Android/sdk/tools/bin/avdmanager list target

Available Android targets:==============] 100% Fetch remote repository...
----------
id: 1 or "android-26"
     Name: Android API 26
     Type: Platform
     API level: 26
     Revision: 2
----------
id: 2 or "android-27"
     Name: Android API 27
     Type: Platform
     API level: 27
     Revision: 3
----------
id: 3 or "android-28"
     Name: Android API 28
     Type: Platform
     API level: 28
     Revision: 6



iOS platform:

Xcode 10.1
Build version 10B61
  • cordova platform ls
cordova platform ls

Installed platforms:
  android 7.0.0
  browser 5.0.4
  ios 4.5.5
Available platforms:
  osx ~4.0.1
  windows ~6.0.0

TomSeldon avatar Nov 28 '18 16:11 TomSeldon

Thanks for reporting. Could you please post the logcat output?

NiklasMerz avatar Nov 28 '18 20:11 NiklasMerz

#132 is somehow related.

Rewriting the Android part with the new API could address this in #129

NiklasMerz avatar Nov 28 '18 20:11 NiklasMerz