arielhernandezmusa / capacitor-biometric-auth

34 stars 22 forks source link

Plugin not compatible with Capacitor 2 #7

Closed jimtonique closed 4 years ago

jimtonique commented 4 years ago

@arielhernandezmusa thanks a lot for this wonderful plugin.

Could you please update it for capacitor 2 ? Because it seems not to be working well with it.

On Android the plugin makes the app crashes. On iOS, the call.reject parameters of verify function seem to be wrong.

Could it be also possible that the available function returns the type of auth available (fingerprint or face) ?

Thanks a lot

VasylMarchuk commented 4 years ago

@jimtonique It works fine for me on Android

For iOS, add an extra nil:

call.reject("Auth failed", nil, nil, ["verified": false, "status": errorCode])

I'm making a fork until this is resolved

jimtonique commented 4 years ago

@VasylMarchuk Ok for iOS.

For Android, did you add extra code on MainActivity.java ?

When using with capacitor 1.5.2 working fine and as soon as I upgrade to capacitor 2.0.1 app crashes at launch.

VasylMarchuk commented 4 years ago

My fork with extra nil: https://github.com/VasylMarchuk/capacitor-biometric-auth/releases/tag/v0.0.8-beta

VasylMarchuk commented 4 years ago

This seems to be sufficient and works for me @jimtonique

From 31e524f9614fb1daaa2dfda5d178fa359ccdab81 Mon Sep 17 00:00:00 2001
From: Vasyl Marchuk <public@vasylmarchuk.com>
Date: Mon, 13 Apr 2020 14:50:29 +0300
Subject: [PATCH] Add SecureStorage & BiometricAuth plugins to Android project

Signed-off-by: Vasyl Marchuk <public@vasylmarchuk.com>
---
 android/app/capacitor.build.gradle                          | 2 ++
 .../app/src/main/java/com/joinseeds/app/MainActivity.java   | 5 ++++-
 android/capacitor.settings.gradle                           | 6 ++++++
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/android/app/capacitor.build.gradle b/android/app/capacitor.build.gradle
index 84cb21a4..bde35065 100644
--- a/android/app/capacitor.build.gradle
+++ b/android/app/capacitor.build.gradle
@@ -10,6 +10,8 @@ android {
 apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"
 dependencies {
     implementation project(':capacitor-branch-deep-links')
+    implementation project(':capacitor-secure-storage-plugin')
+    implementation project(':capacitor-biometric-auth')

 }

diff --git a/android/app/src/main/java/com/joinseeds/app/MainActivity.java b/android/app/src/main/java/com/joinseeds/app/MainActivity.java
index b58fd929..feab268b 100644
--- a/android/app/src/main/java/com/joinseeds/app/MainActivity.java
+++ b/android/app/src/main/java/com/joinseeds/app/MainActivity.java
@@ -9,6 +9,8 @@ import android.content.Intent;
 import java.util.ArrayList;

 import co.boundstate.BranchDeepLinks;
+import com.whitestein.securestorage.SecureStoragePlugin;
+import com.ahm.capacitor.biometric.BiometricAuth;

 public class MainActivity extends BridgeActivity {
   @Override
@@ -20,7 +22,8 @@ public class MainActivity extends BridgeActivity {
       // Additional plugins you've installed go here
       // Ex: add(TotallyAwesomePlugin.class);
       add(BranchDeepLinks.class);
-
+      add(SecureStoragePlugin.class);
+      add(BiometricAuth.class);
     }});
   }

diff --git a/android/capacitor.settings.gradle b/android/capacitor.settings.gradle
index 3fb0f56b..509cdec4 100644
--- a/android/capacitor.settings.gradle
+++ b/android/capacitor.settings.gradle
@@ -4,3 +4,9 @@ project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/

 include ':capacitor-branch-deep-links'
 project(':capacitor-branch-deep-links').projectDir = new File('../node_modules/capacitor-branch-deep-links/android')
+
+include ':capacitor-secure-storage-plugin'
+project(':capacitor-secure-storage-plugin').projectDir = new File('../node_modules/capacitor-secure-storage-plugin/android')
+
+include ':capacitor-biometric-auth'
+project(':capacitor-biometric-auth').projectDir = new File('../node_modules/capacitor-biometric-auth/android')
-- 
2.24.1 (Apple Git-126)
VasylMarchuk commented 4 years ago

Oh, and minSdkVersion = 23

jimtonique commented 4 years ago

I think my crash is not related to this plugin actually. I removed it and it continues crashing. Thanks a lot for your help. I'll try to understand why.

jimtonique commented 4 years ago

@VasylMarchuk finally the issues remains. I created an empty project, installed the plugin and added the references in MainActivity.java but app continues crashing. I'm using Capacitor 2.0.1 and capacitor-biometric-auth 0.0.7.

the issue is the following :

2020-04-13 18:34:10.861 28195-28195/io.ionic.starter E/AndroidRuntime: FATAL EXCEPTION: main Process: io.ionic.starter, PID: 28195 java.lang.RuntimeException: Unable to start activity ComponentInfo{io.ionic.starter/io.ionic.starter.MainActivity}: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2964) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3099) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1856) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:228) at android.app.ActivityThread.main(ActivityThread.java:6734) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911) Caused by: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.design.widget.CoordinatorLayout" on path: DexPathList[[zip file "/data/app/io.ionic.starter-WkIRg6QDBW1tHhB0DEvXmg==/base.apk"],nativeLibraryDirectories=[/data/app/io.ionic.starter-WkIRg6QDBW1tHhB0DEvXmg==/lib/arm64, /system/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at android.view.LayoutInflater.createView(LayoutInflater.java:606) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:807) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) at android.view.LayoutInflater.inflate(LayoutInflater.java:492) at android.view.LayoutInflater.inflate(LayoutInflater.java:423) at android.view.LayoutInflater.inflate(LayoutInflater.java:374) at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555) at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161) at com.getcapacitor.BridgeActivity.init(BridgeActivity.java:56) at io.ionic.starter.MainActivity.onCreate(MainActivity.java:34) at android.app.Activity.performCreate(Activity.java:7136) at android.app.Activity.performCreate(Activity.java:7127) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2944) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3099) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1856) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:228) at android.app.ActivityThread.main(ActivityThread.java:6734) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)

When you said "and minSdkVersion" you meant that you moved you app to this minversion right ? SecureStorage is necessary to use Biometric ?

Thanks in advance for your help.

dmcgill80 commented 4 years ago

@jimtonique Have a look at the first block in docs regarding the 2.0 migration (even though it sounds like you started with 2.0). I ran into the same error, and was resolved by installing/running jetifier and running migrate to androidx.

https://capacitor.ionicframework.com/docs/android/updating/#from-1-5-1-to-2-0-0

jimtonique commented 4 years ago

@dmcgill80 Thanks a lot. That' exactly what I was missing. It's working fine now.