cordova-plugin-fingerprint-aio
cordova-plugin-fingerprint-aio copied to clipboard
Success/Failure callbacks not called if app is paused and resumed whilst prompt is shown
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
Thanks for reporting. Could you please post the logcat output?
#132 is somehow related.
Rewriting the Android part with the new API could address this in #129