Closed vixper closed 1 year ago
Ciao, sto provando anche io a integrarlo. Ieri ho fatto qualche test, ma nulla, non capisco come poi dal mio plugin flutter posso richiamare i metodi e le classi, nel mio file plugin.kt MAgari è solo questione di capire come importare le classi.
Sinceramente non ci ho ancora provato, magari nel weekend se riesco a fare qualche prova ti aggiorno.
Ciao, sto provando anche io a integrarlo. Ieri ho fatto qualche test, ma nulla, non capisco come poi dal mio plugin flutter posso richiamare i metodi e le classi, nel mio file plugin.kt MAgari è solo questione di capire come importare le classi.
puoi condividere il repo? magari ti aiuto a capire cosa non va..
Ciao, sto provando anche io a integrarlo. Ieri ho fatto qualche test, ma nulla, non capisco come poi dal mio plugin flutter posso richiamare i metodi e le classi, nel mio file plugin.kt MAgari è solo questione di capire come importare le classi.
puoi condividere il repo? magari ti aiuto a capire cosa non va..
Ho generato ora un plugin flutter pulito da zero ed incluso le librerie come descritto nel README di questo github. Il codice si trova qui: https://github.com/rox85/verifica_c19_plugin
L'importazione delle librerie dovrebbe avvenire nel file VerificaC19plugin.java, ma personalmente non riesco a capire come
Ciao, sto provando anche io a integrarlo. Ieri ho fatto qualche test, ma nulla, non capisco come poi dal mio plugin flutter posso richiamare i metodi e le classi, nel mio file plugin.kt MAgari è solo questione di capire come importare le classi.
puoi condividere il repo? magari ti aiuto a capire cosa non va..
Ho generato ora un plugin flutter pulito da zero ed incluso le librerie come descritto nel README di questo github. Il codice si trova qui: https://github.com/rox85/verifica_c19_plugin
L'importazione delle librerie dovrebbe avvenire nel file VerificaC19plugin.java, ma personalmente non riesco a capire come
Sono al tuo stesso punto, ovviamente quando provo ad importare le classi mi dà un errore di classi non trovate. Una volta che capiamo come importare le classi poi credo che il grosso è fatto
Niente da fare...ci ho provato in mille modi diversi. Credo però che sia legato ad un problema di import, nel senso che i 3 repository del ministero, si aspettano una struttura di directory che su flutter è differente rispetto ad android nativo, bisognerebbe modificare i puntamenti all'interno dei 3 repository, ma non mi piace come soluzione...
Avete provato ad aggiungere nel build.gradle questo?
dependencies { implementation fileTree(include: '*', dir: 'libs') // Some other dependencies should be here as well. }
O qualcosa del genere.. in una issue GitHub di flutter indicavano la necessità di questa dichiarazione per includere le deps aar altrimenti le ignorava.. di fatto il concetto potrebbe essere il medesimo.. farei una prova io ma sono senza PC fino a lunedì.. se non riuscite prima ci provo io lunedì..
@asterd si, ci ho provato, ma senza risultati. Credo che quell'istruzione sia utile quando si aggiungono librerie compilate, non per i sorgenti.
@asterd è corretto.. in un altro plugin che avevamo sviluppato con flutter eravamo andati ad aggiungere una cosa di questo tipo
dependencies { implementation files('libs\\library.jar') }
..è un tentativo che avevo già fatto senza successo..
Io ho comunque l'impressione che non venga preso in considerazione il codice dei 3 progetti aggiunti e neppure compilato, anche considerando la velocità in cui il mio pc riesce a fare il rebuild.
Un'altra prova che forse farei è quella di spostare i packages "sdk" e "decoder" dentro ad android/src/main/java ...più tardi provo
@rox85 ho già provato a spostare i 3 packages del ministero sotto "java" (e anche su diversi percorsi) per cercare di mantenere l'alberatura richiesta, senza successo anche questo... Comunque sono d'accordo con te, per come stiamo procedendo, il codice dei 3 progetto del ministero non viene proprio compilato.
@rox85 @vixper forse ho trovato la soluzione! provate a modificare il build.gradle aggiungendo:
rootProject.allprojects {
repositories {
google()
mavenCentral()
// added `libs` as dependency location
flatDir {
dirs 'libs'
}
}
}
e poi il settings.gradle cosi:
include ':app'
include ':dgc-sdk'
include ':decoder'
include ':engine'
rootProject.name = 'verifica_c19_plugin'
project(':dgc-sdk').projectDir = new File("./libs/it-dgc-verificac19-sdk-android/sdk")
project(':decoder').projectDir = new File("./libs/dgca-app-core-android/decoder")
project(':engine').projectDir = new File("./libs/dgc-certlogic-android-main/engine")
in questo modo compila e legge correttamente! Se mi verificate che è ok, poi magari lo completiamo insieme
@rox85 @vixper forse ho trovato la soluzione! provate a modificare il build.gradle aggiungendo:
rootProject.allprojects { repositories { google() mavenCentral() // added `libs` as dependency location flatDir { dirs 'libs' } } }
e poi il settings.gradle cosi:
include ':app' include ':dgc-sdk' include ':decoder' include ':engine' rootProject.name = 'verifica_c19_plugin' project(':dgc-sdk').projectDir = new File("./libs/it-dgc-verificac19-sdk-android/sdk") project(':decoder').projectDir = new File("./libs/dgca-app-core-android/decoder") project(':engine').projectDir = new File("./libs/dgc-certlogic-android-main/engine")
in questo modo compila e legge correttamente! Se mi verificate che è ok, poi magari lo completiamo insieme
Grande @asterd! Stasera ci provo e ti faccio sapere!
@rox85 @vixper forse ho trovato la soluzione! provate a modificare il build.gradle aggiungendo:
rootProject.allprojects { repositories { google() mavenCentral() // added `libs` as dependency location flatDir { dirs 'libs' } } }
e poi il settings.gradle cosi:
include ':app' include ':dgc-sdk' include ':decoder' include ':engine' rootProject.name = 'verifica_c19_plugin' project(':dgc-sdk').projectDir = new File("./libs/it-dgc-verificac19-sdk-android/sdk") project(':decoder').projectDir = new File("./libs/dgca-app-core-android/decoder") project(':engine').projectDir = new File("./libs/dgc-certlogic-android-main/engine")
in questo modo compila e legge correttamente! Se mi verificate che è ok, poi magari lo completiamo insieme
Ma una domanda, ma facendo cosi a te importa anche la classe nel file Plugin.kt e riesci a richiamare l'istanza e i metodi? Io continuo ad avere errori di reference unresolved quando provo ad importare il model VerificationViewModel
Ciao, anche io non riesco ancora a richiamare i metodi.
@asterd per lo sviluppo volentieri lo implementiamo insieme, basta che chi vuol collaborare alzi la mano e lo si aggiunge ad un repo.
@rox85 @loreberti89 scusate.. va aggiunto anche:
android {
....
sourceSets {
main.java.srcDirs += [
'./libs/dgca-app-core-android/decoder/src/main',
'./libs/dgc-certlogic-android-main/engine/src/main',
'./libs/it-dgc-verificac19-sdk-android-develop/sdk/src/main',
]
}
}
in questo modo le reference le vede.. ora sono bloccato perché (a parte il poco tempo) non ho ben capito come istanziare le classi del ViewVerificationModel...
Piccolo passo avanti, grazie @asterd ..includendo il codice come indicato e aprendo con Android Studio il progetto "android", vede le reference. Se invece viene aperto come plugin l'errore di compilazione persiste
@rox85 Si, in realtà, con estremo dispiacere, ho notato che la configurazione effettivamente include i sorgenti e quindi fa funzionare i riferimenti ma purtroppo non funziona l'inclusione anche dei build.gradle dei sottoprogetti e la relativa inclusione delle dependencies. Di conseguenza, compilando, i sorgenti aggiunti non trovano le dipendenze e vanno in errore. Ho provato a guardare in giro su vari forum e sembra sia qualcosa di legato a flutter.. temo che per far funzionare le cose, occorra mettere a mano tutte le dependencies sul build.gradle master copiandosele da quelle dei due progetti linkati.. in questo modo potrebbe funzionare.. ho provato anche un apply from nel build.gradle del plugin puntando i build.gradle dei due progetti terzi, ma sono fatti con delle dichiarazioni Deps prese da file locali e quindi non va.. insomma.. il solito arrosto.. certo che anche i cari amici del ministero una bella api no eh?
Ciao, se volete dare un'occhiata alla mia repo: https://github.com/manueltag/my_green_pass Sono riuscito a compilare il progetto con successo. Ho iniziato a istanziare i vari oggetti richiesti per la verifica del qr code: https://github.com/manueltag/my_green_pass/blob/master/android/app/src/main/kotlin/com/example/my_green_pass/MainActivity.kt Fatemi sapere se riuscite a fare qualcosa o se ci sono problemi!
Grande @manueltag!! A quanto vedo non si tratta di un plugin ma sei riuscito a inserirlo direttamente in un nuovo progetto Flutter
Ciao, se volete dare un'occhiata alla mia repo: https://github.com/manueltag/my_green_pass Sono riuscito a compilare il progetto con successo. Ho iniziato a istanziare i vari oggetti richiesti per la verifica del qr code: https://github.com/manueltag/my_green_pass/blob/master/android/app/src/main/kotlin/com/example/my_green_pass/MainActivity.kt Fatemi sapere se riuscite a fare qualcosa o se ci sono problemi!
ho provato a sfruttare come inserito da te val viewModel: VerificationViewModel = ViewModelProvider(this).get(VerificationViewModel::class.java)
ma mi da eccezione "cannot create an instance of class [...]VerificationViewModel", purtroppo come anche tu stesso hai commentato nel tuo codice, ci sono molti più cose da dover fare prima di poter avere il verificationViewModel, anche io sto combattendo su questo punto
Finalmente sono riuscito a far funzionare la libreria!! Nei prossimi giorni aggiorno la repo 😄
Ciao, se volete dare un'occhiata alla mia repo: https://github.com/manueltag/my_green_pass Sono riuscito a compilare il progetto con successo. Ho iniziato a istanziare i vari oggetti richiesti per la verifica del qr code: https://github.com/manueltag/my_green_pass/blob/master/android/app/src/main/kotlin/com/example/my_green_pass/MainActivity.kt Fatemi sapere se riuscite a fare qualcosa o se ci sono problemi!
ho provato a sfruttare come inserito da te
val viewModel: VerificationViewModel = ViewModelProvider(this).get(VerificationViewModel::class.java)
ma mi da eccezione "cannot create an instance of class [...]VerificationViewModel", purtroppo come anche tu stesso hai commentato nel tuo codice, ci sono molti più cose da dover fare prima di poter avere il verificationViewModel, anche io sto combattendo su questo punto
Ciao, avevi poi risolto? io sono allo stesso punto. La differenza è che sto provando a creare un Plugin e non una "app" nuova. Comunque dopo tutte le implementazioni sono riuscito ad arrivare al punto in cui non posso creare un nuovo VerificationModel
Se a qualcuno può interessare, ho provato a creare una patch git da applicare ad un progetto Flutter (ho usato la versione 2.5.3, ma penso funzioni anche con inferiori) per inizializzare la struttura di base per l'sdk. La patch prende spunto a piene mani dal lavoro di @manueltag , ho rivisto leggermente la struttura del progetto portando fuori le "librerie" dall'alberatura principale in una cartella "lib" parallela a quella del progetto Flutter:
|---my_green_pass (questo è il progetto Flutter)
|---lib
|---dgca-app-core-android
|---dgc-certlogic-android
|---it-dgc-verificac19-sdk-android (clonare repo con tag 1.0.1)
Nel build.gradle ho aggiunto l'applicazione dei plugin 'kotlin-kapt' e 'dagger.hilt.android.plugin', in questo modo tutta la dependency injection avviene, come per il progetto it-dgc-verificaC19-android, tramite Hilt, e non è quindi necessario istanziare manualmente la VerificationViewModel, che viene quindi iniettata nella classe MainActivity.kt (il risultante CertificateSimple, in questa versione, viene solamente loggato). Il file Application.kt riprende il contenuto del file omonimo di it-dgc-verificaC19-android ed inizializza il LoadKeysWorker, l'unica differenza è che la classe estende una FlutterApplication .
Allego il file di patch che può essere applicato ad un progetto Flutter appena creato (il nome del package della application può essere facilmente adattato modificando la patch)
flutter create my_green_pass
cd my_green_pass
git init
git apply basic_sdk_patch.txt
Ottimoo, però la patch git @ferrerogg mi da degli errori nell'esecuzione del progetto con flutter run, dopo che ho fatto i passi che hai indicato tu mi dice
Launching lib\main.dart on sdk gphone x86 in debug mode...
FAILURE: Build failed with an exception.
* What went wrong:
Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.
> Could not resolve all task dependencies for configuration ':app:debugCompileClasspath'.
> Could not resolve project :dgc-sdk.
Required by:
project :app
> No matching configuration of project :dgc-sdk was found. The consumer was configured to find an API of a component, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'debug', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm' but:
- None of the consumable configurations have attributes.
> Could not resolve project :decoder.
Required by:
project :app
> No matching configuration of project :decoder was found. The consumer was configured to find an API of a component, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'debug', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm' but:
- None of the consumable configurations have attributes.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 2s
Running Gradle task 'assembleDebug'... 3,4s
Exception: Gradle task assembleDebug failed with exit code 1
Controlla nel file android/settings.gradle, dovresti avere i riferimenti ai progetti sotto la cartella 'lib' da cui il progetto Flutter dipende (vanno scaricati separatamente tramite git clone)
project(':dgc-sdk').projectDir = new File("../../lib/it-dgc-verificac19-sdk-android/sdk")
project(':decoder').projectDir = new File("../../lib/dgca-app-core-android/decoder")
Oltre ai 2 progetti sopra indicati serve anche il progetto 'dgc-certlogic-android', sempre da clonare nella medesima cartella sotto 'lib'
Ciao a tutti, per quanto riguarda una app da 0 credo che possa funzionare, vedo che il worker scarica i certificato ed il mio "example" viene compilato correttamente, non ho portato in fondo la app perché il mio obiettivo è un altro. Il mio obiettivo sarebbe quello di crearmi un plugin da "appendere" ad una mia app già esistente, ma ho diversi problemi.
Il principale pare essere che, il ViewModel by, se non ho capito male è utlizzabile solo all'interno di una AppCompatActivity, quindi all'interno della classe del Plugin non è possibile avere il riferimento al VerificationViewModel. Poiché la classe activityAware è una interfaccia di una semplice Activity. Non pare esserci nessuna interfaccia, al momento, che possa dire che quel plugin utilizza una Fragment Activity. A questo proposito ho provato a utilizzare il metodo tramite il ViewmodelProvider:
val model: VerificationViewModel = ViewModelProvider(this).get(VerificationViewModel::class.java)
Il problema è che questo impone che come argomento del ViewModelProvider venga fornito un tipo ViewModelStoreOwner.
Allora ho provato a implementare l'interfaccia import androidx.lifecycle.ViewModelStoreOwner e il che funziona, ovvero compila. Il problema è che quando poi vado effettivamente a richimare quella funzione, continuo a ricevere l'errore:
java.lang.RuntimeException: Cannot create an instance of class it.ministerodellasalute.verificaC19sdk.model.VerificationViewModel
Qualcuno ha qualche suggerimento?
Finalmente sono riuscito a far funzionare la libreria!! Nei prossimi giorni aggiorno la repo 😄
Ho aggiornato la repo! Devo ancora sistemare bene i file ma è un buon punto di partenza. Fatemi sapere se riuscite a compilare e utilizzare l'app 👍 😄
Ciao ragazzi, ho creato una repo per cercare di capire, se qualcuno ha voglia, di come implementare la sdk in un plugin flutter e non una app diretta nuda e cruda. Sono partito dalle basi che avete tirato su, ora sono bloccato nel momento in cui io dovrei lanciare la funzione di validazione. Perché come dicevo nel commento sopra, la problematica starebbe nel fatto che non è possibile (o almeno io non sto trovando uno workaround) "instanziare" (anche se non lo istanzi perché usato hilt) l'oggetto verificationModel per efettuare la verifica:
https://github.com/loreberti89/flutter_greenpass_sdk
Qua ho la repo, l'unica cosa, che dovete fare è portarvi le 3 librerire dcg-certlogic-android, dcga-app-core-android, it-dgc-verificac19-sdk-android nella folder libs nella root del progetto. Se qualcuno può dare una mano è ben accetto.
Finalmente sono riuscito a far funzionare la libreria!! Nei prossimi giorni aggiorno la repo 😄
Ho aggiornato la repo! Devo ancora sistemare bene i file ma è un buon punto di partenza. Fatemi sapere se riuscite a compilare e utilizzare l'app 👍 😄
Ciao, in debug tutto ok, ma voi siete riusciti a generare una apk o un bundle? A me da un errore: Remove androidx.work.impl.WorkManagerInitializer from your AndroidMa nifest.xml when using on-demand initialization. [RemoveWorkManagerInitializer] Che nonostante abbia commentato tutti i manifest continua darmelo. Oltre ad un altro errore che non riesco a trovare:
Lint found fatal errors while assembling a release target.
To proceed, either fix the issues identified by lint, or modify your build script as follows:
...
android {
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
}
Prova ad aggiungere il seguente frammento nel tuo AndroidManifest.xml dentro al tag application, a fianco dei meta-data per capirci
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
android:exported="false"
tools:node="remove" />
Prova ad aggiungere il seguente frammento nel tuo AndroidManifest.xml dentro al tag application, a fianco dei meta-data per capirci
<provider android:name="androidx.work.impl.WorkManagerInitializer" android:authorities="${applicationId}.workmanager-init" android:exported="false" tools:node="remove" />
Grazie questo mi ha tolto il primo errore. Ne ho in realtà un altro ora:
* What went wrong:
Execution failed for task ':dgc-sdk:verifyReleaseResources'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> 1 exception was raised by workers:
com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
C:\Users\Lorenzo\StudioProjects\myapp\libs\it-dgc-verificac19-sdk-android\sdk\src\main\AndroidManifest.xml:26:5-40:19: AAPT: error: resource mipmap/ic_launcher (aka it.ministerodellasalute.verificaC19sdk:mipmap/ic_launcher) not found.
C:\Users\Lorenzo\StudioProjects\myapp\libs\it-dgc-verificac19-sdk-android\sdk\src\main\AndroidManifest.xml:26:5-40:19: AAPT: error: resource string/app_name (aka it.ministerodellasalute.verificaC19sdk:string/app_name) not found.
C:\Users\Lorenzo\StudioProjects\myapp\libs\it-dgc-verificac19-sdk-android\sdk\src\main\AndroidManifest.xml:26:5-40:19: AAPT: error: resource mipmap/ic_launcher_round (aka it.ministerodellasalute.verificaC19sdk:mipmap/ic_launcher_round) not found.
C:\Users\Lorenzo\StudioProjects\myapp\libs\it-dgc-verificac19-sdk-android\sdk\src\main\AndroidManifest.xml:26:5-40:19: AAPT: error: resource style/AppTheme (aka it.ministerodellasalute.verificaC19sdk:style/AppTheme) not found.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
Ovviamente nel mio Manifest ho aggiunto il tools:replace e infatti nel manifest che viene buildato è corretto:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.myappit.myapp">
...
<application
tools:replace="android:name, android:label, android:icon, android:roundIcon, android:theme"
android:label="myapp"
android:allowBackup="false"
android:name=".MyApp"
android:roundIcon="@mipmap/launcher_icon"
android:theme="@style/LaunchTheme"
android:usesCleartextTraffic="true"
android:icon="@mipmap/launcher_icon"
>
E' come se ignorasse il replace, ma non ne comprendo il motivo dato che ad esempio il appBundle viene buildato, ma una semplice APK no.
Niente io continuo ad avere problemi una volta buildata la app. Tralasciando il problema sopracitato, per test ho brutalmente levato le launcher icon nella sdk. Compilo la mia apk, la installo, ma al momento che provo a fare un check, la app crasha e ricevo questo errore:
java.lang.ExceptionInInitializerError
at e.c.a.b.g.g.a.b(Unknown Source:0)
at e.c.a.b.g.g.b.<clinit>(Unknown Source:4)
at e.c.a.b.g.g.b.b(Unknown Source:0)
at e.c.a.b.g.a.<clinit>(Unknown Source:10)
at e.c.a.b.g.a.a(Unknown Source:0)
at e.c.a.b.b.b.<clinit>(Unknown Source:15)
at e.c.a.b.b.a.h(Unknown Source:0)
at e.c.a.b.b.a.a(Unknown Source:0)
at e.c.a.b.h.c.<init>(Unknown Source:20)
at e.c.a.b.h.b.d(Unknown Source:2)
at e.c.a.b.h.b.b(Unknown Source:0)
at i.a.a.a.j.a.a(Unknown Source:63)
at it.ministerodellasalute.verificaC19sdk.model.VerificationViewModel$a$a.n(Unknown Source:163)
at kotlin.f0.j.a.a.g(Unknown Source:9)
at kotlinx.coroutines.m0.run(Unknown Source:116)
at kotlinx.coroutines.e2.b.m0(Unknown Source:0)
at kotlinx.coroutines.e2.b$a.c(Unknown Source:14)
at kotlinx.coroutines.e2.b$a.m(Unknown Source:28)
at kotlinx.coroutines.e2.b$a.run(Unknown Source:0)
Caused by: java.lang.IllegalArgumentException: class "e.c.a.b.f.b.e.a" has no appropriate constructor (keyword "additionalItems"; expected a constructor with a JsonNode as an argument)
at e.c.a.b.f.b.d.<init>(Unknown Source:39)
at e.c.a.b.g.g.a.a(Unknown Source:2)
at e.c.a.b.g.g.a.<clinit>(Unknown Source:8)
... 19 more
In debug tutto funziona. Sono confuso.
E' come se ignorasse il replace, ma non ne comprendo il motivo dato che ad esempio il appBundle viene buildato, ma una semplice APK no.
Avevo lo stesso problema lanciando da VSCode il comando flutter build apk, però aprendo il progetto android da Android Studio e lanciando da lì Build->Build bundle(s) / APK(s) funziona. Per il secondo errore non saprei dirti.
E' come se ignorasse il replace, ma non ne comprendo il motivo dato che ad esempio il appBundle viene buildato, ma una semplice APK no.
Avevo lo stesso problema lanciando da VSCode il comando flutter build apk, però aprendo il progetto android da Android Studio e lanciando da lì Build->Build bundle(s) / APK(s) funziona. Per il secondo errore non saprei dirti.
Dopo una Giornata a cristonare, forse sono riuscito a risolvere. E' una cosa bella? no. Funziona? si. Credo che alla base di tutto ci sia la minificazione che fa flutter con il flag --release
In debug la app non presentava problemi. Sia con test "in prod" che in "locale". Quindi ho cercato una soluzione e l'unica che ho trovato è la seguente:
nel gradle a livello di app /android/app/build.gradle Sotto i buildTypes nella voce release ho fatto cosi:
{
signingConfig signingConfigs.release
minifyEnabled false
shrinkResources false
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}
}
allo stesso livello ho aggiunto il file proguard-rules.pro Fatto cosi:
#Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
Si, purtroppo il non minificare è un grosso problema, ma non ho trovato soluzioni alternative. se qualcuno ha soluzioni o consigli sono ben accetti.
@manueltag, bel lavoro grazie! Provata oggi, ho anche importato i nuovi sdk del ministero, e con qualche piccola modifica a build.gradle, AndroidManifest, e MainActivity.kt, funziona perfettamente. In MainActivity.kt in particolare ho visto che alla chiamata :
decode(qrCode.toString(), true,
è necessario aggiungere il parametro "scanMode" di tipo stringa
Controllando in VericationViewModel.kt dell'sdk, ho visto che dovrebbe trattarsi della verifica del "super Green Pass" in quanto:
else if (scanMode == "2G" && certificateModel.tests != null) { certificateSimple.certificateStatus = CertificateStatus.NOT_VALID
quindi se il parametro è valorizzato come "2G" , il metodo restituisce il risultato non valido quando il green pass è stato emesso dopo un tampone, correggetemi se sbaglio.
Ciao Ragazzi, con i nuovi aggiornamenti come vi siete comportati? Ho un problema relativo allo scaricamento dei certificati revocati. Perché di fatto non vengono scaricati. Ora la natura del problema dovrebbe essere la seguente: Nella classe VerifierRepository.impl viene lanciato il SyncData. C'è questo controllo:
if (preferences.isDrlSyncActive) {
getCRLStatus()
}
Fin qua tutto bene perché la preferences isDrlSyncActive è di default True. Entrando dentro la funzione però, l'sdk va a scaricare i certificati solo se:
if (isSizeOverThreshold(crlStatus) && !preferences.shouldInitDownload) {
sizeOverLiveData.postValue(true)
} else {
sizeOverLiveData.postValue(false)
downloadChunks() //qua va a scaricare revocati.
}
Il problema è che preferences.shouldInitDownload è di default false, e quindi la dentro non ci passa mai. Quindi non va mai a scaricare i chunks. Mi chiedo, come è possibile andare a settare questa preferences a true? Provando a modificare la sdk e mettendo questa preferences a default true, i certificati revocati vengono scaricati.
Come avete risolto voi?
Ciao Ragazzi, con i nuovi aggiornamenti come vi siete comportati? Ho un problema relativo allo scaricamento dei certificati revocati. Perché di fatto non vengono scaricati. Ora la natura del problema dovrebbe essere la seguente: Nella classe VerifierRepository.impl viene lanciato il SyncData. C'è questo controllo:
if (preferences.isDrlSyncActive) { getCRLStatus() }
Fin qua tutto bene perché la preferences isDrlSyncActive è di default True. Entrando dentro la funzione però, l'sdk va a scaricare i certificati solo se:
if (isSizeOverThreshold(crlStatus) && !preferences.shouldInitDownload) { sizeOverLiveData.postValue(true) } else { sizeOverLiveData.postValue(false) downloadChunks() //qua va a scaricare revocati. }
Il problema è che preferences.shouldInitDownload è di default false, e quindi la dentro non ci passa mai. Quindi non va mai a scaricare i chunks. Mi chiedo, come è possibile andare a settare questa preferences a true? Provando a modificare la sdk e mettendo questa preferences a default true, i certificati revocati vengono scaricati.
Come avete risolto voi?
ok dopo un po' di prove dovrei aver risolto: Nel MainActivity ho aggiunto una funzione presa da VerificaC19:
private fun prepareForDownload() {
var viewModel = ViewModelProvider(this).get(FirstViewModel::class.java)
viewModel.resetCurrentRetry()
viewModel.setShouldInitDownload(true)
viewModel.setDownloadAsAvailable()
}
poi nella funzione configureFlutterEngine Ho aggunto il richiamo a questa funzione, mi pare che ora i certificati vengano scaricati. Spero possa essere utile a qualcuno. Ciao.
Approvata oggi (7 Marzo 2022) la PR per l'inserimento in SDK/Lib terze parti (autorizzate dal Ministero della Salute) di VerificaC19-Flutter (by @mastro993).
https://github.com/ministero-salute/it-dgc-verificac19-sdk-onboarding
A partire da oggi è quindi conforme/autorizzato l'uso di tale libreria anche in ambiti/scenari di produzione per validazioni DGC in Italia.
Pertanto, può essere legittimamente integrato - in alternativa a DGC-SDK Android/Kotlin ufficiale - in progetti Flutter per validazioni DGC in Italia.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
E' prevista l'integrazione con flutter?