diff --git a/CHANGELOG.md b/CHANGELOG.md index d66faceb..078537f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Release Notes +## 11.2.4 - December 22, 2025 + +### Changed +* Bump Android SDK to [v11.1.5](https://github.com/smileidentity/android/releases/tag/v11.1.5) +* Bump iOS SDK to [v11.1.4](https://github.com/smileidentity/ios/releases/tag/v11.1.4) + +### Added +* Added smile sensitivity parameter for customizable selfie capture thresholds. + ## 11.2.3 - November 3, 2025 ### Changed diff --git a/android/build.gradle.kts b/android/build.gradle.kts index 8f9d661c..680034c3 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -92,7 +92,7 @@ android { } dependencies { - implementation("com.smileidentity:android-sdk:11.1.4") + implementation("com.smileidentity:android-sdk:11.1.5") implementation("androidx.core:core-ktx:1.17.0") implementation(platform("androidx.compose:compose-bom:2025.11.00")) implementation("androidx.compose.ui:ui") diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml index c6d5ecc3..2ee35998 100644 --- a/android/src/main/AndroidManifest.xml +++ b/android/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ + + diff --git a/android/src/main/kotlin/com/smileidentity/flutter/SmileIDPlugin.kt b/android/src/main/kotlin/com/smileidentity/flutter/SmileIDPlugin.kt index 5ec16ef7..12a9ddfe 100644 --- a/android/src/main/kotlin/com/smileidentity/flutter/SmileIDPlugin.kt +++ b/android/src/main/kotlin/com/smileidentity/flutter/SmileIDPlugin.kt @@ -71,7 +71,7 @@ class SmileIDPlugin : context = flutterPluginBinding.applicationContext // Set wrapper info for Flutter SDK - SmileID.setWrapperInfo(WrapperSdkName.Flutter, "11.2.3") + SmileID.setWrapperInfo(WrapperSdkName.Flutter, "11.2.4") flutterPluginBinding.platformViewRegistry.registerViewFactory( SmileIDBiometricKYC.VIEW_TYPE_ID, diff --git a/android/src/main/kotlin/com/smileidentity/flutter/products/capture/SmileIDDocumentCaptureView.kt b/android/src/main/kotlin/com/smileidentity/flutter/products/capture/SmileIDDocumentCaptureView.kt index af7e51e2..2579477a 100644 --- a/android/src/main/kotlin/com/smileidentity/flutter/products/capture/SmileIDDocumentCaptureView.kt +++ b/android/src/main/kotlin/com/smileidentity/flutter/products/capture/SmileIDDocumentCaptureView.kt @@ -15,6 +15,7 @@ import com.smileidentity.compose.theme.colorScheme import com.smileidentity.compose.theme.typography import com.smileidentity.flutter.results.DocumentCaptureResult import com.smileidentity.flutter.utils.DocumentCaptureResultAdapter +import com.smileidentity.flutter.utils.toAutoCapture import com.smileidentity.flutter.views.SmileComposablePlatformView import com.smileidentity.flutter.views.SmileIDViewFactory import com.smileidentity.metadata.LocalMetadataProvider @@ -54,9 +55,7 @@ internal class SmileIDDocumentCaptureView private constructor( Surface( modifier = Modifier.fillMaxSize(), ) { - val autoCapture = (args["autoCapture"] as? String)?.lowercase()?.let { input -> - AutoCapture.entries.firstOrNull { it.name.lowercase() == input } - } ?: AutoCapture.AutoCapture + val autoCapture = (args["autoCapture"] as? String).toAutoCapture() val isDocumentFrontSide = args["isDocumentFrontSide"] as? Boolean ?: true val showInstructions = args["showInstructions"] as? Boolean ?: true val showAttribution = args["showAttribution"] as? Boolean ?: true diff --git a/android/src/main/kotlin/com/smileidentity/flutter/products/capture/SmileIDSmartSelfieCaptureView.kt b/android/src/main/kotlin/com/smileidentity/flutter/products/capture/SmileIDSmartSelfieCaptureView.kt index e3af89ff..633421dc 100644 --- a/android/src/main/kotlin/com/smileidentity/flutter/products/capture/SmileIDSmartSelfieCaptureView.kt +++ b/android/src/main/kotlin/com/smileidentity/flutter/products/capture/SmileIDSmartSelfieCaptureView.kt @@ -32,9 +32,11 @@ import com.smileidentity.compose.selfie.SelfieCaptureScreen import com.smileidentity.compose.selfie.SmartSelfieInstructionsScreen import com.smileidentity.compose.theme.colorScheme import com.smileidentity.compose.theme.typography +import com.smileidentity.flutter.utils.toSmileSensitivity import com.smileidentity.flutter.views.SmileIDViewFactory import com.smileidentity.flutter.views.SmileSelfieComposablePlatformView import com.smileidentity.metadata.LocalMetadataProvider +import com.smileidentity.models.SmileSensitivity import com.smileidentity.util.randomJobId import com.smileidentity.util.randomUserId import com.smileidentity.viewmodel.SelfieUiState @@ -66,6 +68,7 @@ internal class SmileIDSmartSelfieCaptureView private constructor( @OptIn(SmileIDOptIn::class) @Composable override fun Content(args: Map) { + val smileSensitivity = (args["smileSensitivity"] as? String).toSmileSensitivity() val showConfirmationDialog = args["showConfirmationDialog"] as? Boolean ?: true val showInstructions = args["showInstructions"] as? Boolean ?: true val showAttribution = args["showAttribution"] as? Boolean ?: true @@ -99,6 +102,7 @@ internal class SmileIDSmartSelfieCaptureView private constructor( allowNewEnroll = true, skipApiSubmission = true, metadata = mutableListOf(), + smileSensitivity = smileSensitivity, ) }, ) @@ -125,6 +129,7 @@ internal class SmileIDSmartSelfieCaptureView private constructor( userId, jobId, allowAgentMode, + smileSensitivity, viewModel, ) } @@ -140,6 +145,7 @@ internal class SmileIDSmartSelfieCaptureView private constructor( userId: String, jobId: String, allowAgentMode: Boolean, + smileSensitivity: SmileSensitivity, viewModel: SelfieViewModel, ) { Box( @@ -156,6 +162,7 @@ internal class SmileIDSmartSelfieCaptureView private constructor( allowNewEnroll = true, skipApiSubmission = true, viewModel = viewModel, + smileSensitivity = smileSensitivity, ) } } diff --git a/android/src/main/kotlin/com/smileidentity/flutter/products/document/SmileIDDocumentVerification.kt b/android/src/main/kotlin/com/smileidentity/flutter/products/document/SmileIDDocumentVerification.kt index b6556c08..db45c334 100644 --- a/android/src/main/kotlin/com/smileidentity/flutter/products/document/SmileIDDocumentVerification.kt +++ b/android/src/main/kotlin/com/smileidentity/flutter/products/document/SmileIDDocumentVerification.kt @@ -6,9 +6,9 @@ import com.smileidentity.SmileID import com.smileidentity.compose.DocumentVerification import com.smileidentity.flutter.results.DocumentCaptureResult import com.smileidentity.flutter.utils.DocumentCaptureResultAdapter +import com.smileidentity.flutter.utils.toAutoCapture import com.smileidentity.flutter.views.SmileComposablePlatformView import com.smileidentity.flutter.views.SmileIDViewFactory -import com.smileidentity.models.AutoCapture import com.smileidentity.results.SmileIDResult import com.smileidentity.util.randomJobId import com.smileidentity.util.randomUserId @@ -55,9 +55,7 @@ internal class SmileIDDocumentVerification private constructor( jobId = args["jobId"] as? String ?: randomJobId(), autoCaptureTimeout = (args["autoCaptureTimeout"] as? Int)?.toLong()?.milliseconds ?: 10.seconds, - autoCapture = (args["autoCapture"] as? String)?.lowercase()?.let { input -> - AutoCapture.entries.firstOrNull { it.name.lowercase() == input } - } ?: AutoCapture.AutoCapture, + autoCapture = (args["autoCapture"] as? String).toAutoCapture(), allowNewEnroll = args["allowNewEnroll"] as? Boolean ?: false, showAttribution = args["showAttribution"] as? Boolean ?: true, allowAgentMode = args["allowAgentMode"] as? Boolean ?: false, diff --git a/android/src/main/kotlin/com/smileidentity/flutter/products/enhanceddocv/SmileIDEnhancedDocumentVerification.kt b/android/src/main/kotlin/com/smileidentity/flutter/products/enhanceddocv/SmileIDEnhancedDocumentVerification.kt index cbdf7c9e..35cb164e 100644 --- a/android/src/main/kotlin/com/smileidentity/flutter/products/enhanceddocv/SmileIDEnhancedDocumentVerification.kt +++ b/android/src/main/kotlin/com/smileidentity/flutter/products/enhanceddocv/SmileIDEnhancedDocumentVerification.kt @@ -7,9 +7,9 @@ import com.smileidentity.compose.EnhancedDocumentVerificationScreen import com.smileidentity.flutter.results.DocumentCaptureResult import com.smileidentity.flutter.utils.DocumentCaptureResultAdapter import com.smileidentity.flutter.utils.buildConsentInformation +import com.smileidentity.flutter.utils.toAutoCapture import com.smileidentity.flutter.views.SmileComposablePlatformView import com.smileidentity.flutter.views.SmileIDViewFactory -import com.smileidentity.models.AutoCapture import com.smileidentity.results.SmileIDResult import com.smileidentity.util.randomJobId import com.smileidentity.util.randomUserId @@ -58,9 +58,7 @@ internal class SmileIDEnhancedDocumentVerification private constructor( jobId = args["jobId"] as? String ?: randomJobId(), autoCaptureTimeout = (args["autoCaptureTimeout"] as? Int)?.toLong()?.milliseconds ?: 10.seconds, - autoCapture = (args["autoCapture"] as? String)?.lowercase()?.let { input -> - AutoCapture.entries.firstOrNull { it.name.lowercase() == input } - } ?: AutoCapture.AutoCapture, + autoCapture = (args["autoCapture"] as? String).toAutoCapture(), allowNewEnroll = args["allowNewEnroll"] as? Boolean ?: false, showAttribution = args["showAttribution"] as? Boolean ?: true, allowAgentMode = args["allowAgentMode"] as? Boolean ?: false, diff --git a/android/src/main/kotlin/com/smileidentity/flutter/products/selfie/SmileIDSmartSelfieAuthentication.kt b/android/src/main/kotlin/com/smileidentity/flutter/products/selfie/SmileIDSmartSelfieAuthentication.kt index e55b1321..1e34911d 100644 --- a/android/src/main/kotlin/com/smileidentity/flutter/products/selfie/SmileIDSmartSelfieAuthentication.kt +++ b/android/src/main/kotlin/com/smileidentity/flutter/products/selfie/SmileIDSmartSelfieAuthentication.kt @@ -4,6 +4,7 @@ import android.content.Context import androidx.compose.runtime.Composable import com.smileidentity.SmileID import com.smileidentity.compose.SmartSelfieAuthentication +import com.smileidentity.flutter.utils.toSmileSensitivity import com.smileidentity.flutter.views.SmileIDViewFactory import com.smileidentity.flutter.views.SmileSelfieComposablePlatformView import com.smileidentity.util.randomUserId @@ -34,6 +35,7 @@ internal class SmileIDSmartSelfieAuthentication private constructor( @Composable override fun Content(args: Map) { val extraPartnerParams = args["extraPartnerParams"] as? Map ?: emptyMap() + val smileSensitivity = (args["smileSensitivity"] as? String).toSmileSensitivity() SmileID.SmartSelfieAuthentication( userId = args["userId"] as? String ?: randomUserId(), allowNewEnroll = args["allowNewEnroll"] as? Boolean ?: false, @@ -41,6 +43,7 @@ internal class SmileIDSmartSelfieAuthentication private constructor( showAttribution = args["showAttribution"] as? Boolean ?: true, showInstructions = args["showInstructions"] as? Boolean ?: true, skipApiSubmission = args["skipApiSubmission"] as? Boolean ?: false, + smileSensitivity = smileSensitivity, extraPartnerParams = extraPartnerParams.toImmutableMap(), onResult = { res -> handleResult(res) }, ) diff --git a/android/src/main/kotlin/com/smileidentity/flutter/products/selfie/SmileIDSmartSelfieEnrollment.kt b/android/src/main/kotlin/com/smileidentity/flutter/products/selfie/SmileIDSmartSelfieEnrollment.kt index 8b8bd33f..dd7c02c8 100644 --- a/android/src/main/kotlin/com/smileidentity/flutter/products/selfie/SmileIDSmartSelfieEnrollment.kt +++ b/android/src/main/kotlin/com/smileidentity/flutter/products/selfie/SmileIDSmartSelfieEnrollment.kt @@ -4,6 +4,7 @@ import android.content.Context import androidx.compose.runtime.Composable import com.smileidentity.SmileID import com.smileidentity.compose.SmartSelfieEnrollment +import com.smileidentity.flutter.utils.toSmileSensitivity import com.smileidentity.flutter.views.SmileIDViewFactory import com.smileidentity.flutter.views.SmileSelfieComposablePlatformView import com.smileidentity.util.randomUserId @@ -34,6 +35,7 @@ internal class SmileIDSmartSelfieEnrollment private constructor( @Composable override fun Content(args: Map) { val extraPartnerParams = args["extraPartnerParams"] as? Map ?: emptyMap() + val smileSensitivity = (args["smileSensitivity"] as? String).toSmileSensitivity() SmileID.SmartSelfieEnrollment( userId = args["userId"] as? String ?: randomUserId(), allowNewEnroll = args["allowNewEnroll"] as? Boolean ?: false, @@ -41,6 +43,7 @@ internal class SmileIDSmartSelfieEnrollment private constructor( showAttribution = args["showAttribution"] as? Boolean ?: true, showInstructions = args["showInstructions"] as? Boolean ?: true, skipApiSubmission = args["skipApiSubmission"] as? Boolean ?: false, + smileSensitivity = smileSensitivity, extraPartnerParams = extraPartnerParams.toImmutableMap(), onResult = { res -> handleResult(res) }, ) diff --git a/android/src/main/kotlin/com/smileidentity/flutter/utils/SmileIDUtils.kt b/android/src/main/kotlin/com/smileidentity/flutter/utils/SmileIDUtils.kt index a58b560c..845ba0aa 100644 --- a/android/src/main/kotlin/com/smileidentity/flutter/utils/SmileIDUtils.kt +++ b/android/src/main/kotlin/com/smileidentity/flutter/utils/SmileIDUtils.kt @@ -1,7 +1,9 @@ package com.smileidentity.flutter.utils +import com.smileidentity.models.AutoCapture import com.smileidentity.models.ConsentInformation import com.smileidentity.models.ConsentedInformation +import com.smileidentity.models.SmileSensitivity import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -50,3 +52,26 @@ fun buildConsentInformation( } else { null } + +/** + * Converts a string to an [AutoCapture] enum value. + * Returns [AutoCapture.AutoCapture] if the string does not match any enum value. + * + * @receiver The string to convert. + * @return The corresponding [AutoCapture] enum value or [AutoCapture.AutoCapture] if no match is found. + */ + +fun String?.toAutoCapture(): AutoCapture = AutoCapture.entries.firstOrNull { + it.name.equals(this, ignoreCase = true) +} ?: AutoCapture.AutoCapture + +/** + * Converts a string to a [SmileSensitivity] enum value. + * Returns [SmileSensitivity.NORMAL] if the string does not match any enum value. + * + * @receiver The string to convert. + * @return The corresponding [SmileSensitivity] enum value or [SmileSensitivity.NORMAL] if no match is found. + */ +fun String?.toSmileSensitivity(): SmileSensitivity = SmileSensitivity.entries.firstOrNull { + it.name.equals(this, ignoreCase = true) +} ?: SmileSensitivity.NORMAL diff --git a/ios/Classes/SmileIDPlugin.swift b/ios/Classes/SmileIDPlugin.swift index 28afdbae..9e652411 100644 --- a/ios/Classes/SmileIDPlugin.swift +++ b/ios/Classes/SmileIDPlugin.swift @@ -8,7 +8,7 @@ public class SmileIDPlugin: NSObject, FlutterPlugin, SmileIDApi { let api: SmileIDApi & NSObjectProtocol = SmileIDPlugin() SmileIDApiSetup.setUp(binaryMessenger: messenger, api: api) - SmileID.setWrapperInfo(name: .flutter, version: "11.2.3") + SmileID.setWrapperInfo(name: .flutter, version: "11.2.4") let documentVerificationFactory = SmileIDDocumentVerification.Factory( messenger: registrar.messenger() diff --git a/ios/Classes/SmileIDSmartSelfieAuthentication.swift b/ios/Classes/SmileIDSmartSelfieAuthentication.swift index bc623ec3..ba392df8 100644 --- a/ios/Classes/SmileIDSmartSelfieAuthentication.swift +++ b/ios/Classes/SmileIDSmartSelfieAuthentication.swift @@ -29,6 +29,7 @@ class SmileIDSmartSelfieAuthentication : NSObject, FlutterPlatformView, SmartSel allowAgentMode: args["allowAgentMode"] as? Bool ?? false, showAttribution: args["showAttribution"] as? Bool ?? true, showInstructions: args["showInstructions"] as? Bool ?? true, + smileSensitivity: SmileSensitivity.from(args["smileSensitivity"] as? String), skipApiSubmission: args["skipApiSubmission"] as? Bool ?? false, extraPartnerParams: args["extraPartnerParams"] as? [String: String] ?? [:], delegate: self diff --git a/ios/Classes/SmileIDSmartSelfieCaptureView.swift b/ios/Classes/SmileIDSmartSelfieCaptureView.swift index 273842e0..6028ff5d 100644 --- a/ios/Classes/SmileIDSmartSelfieCaptureView.swift +++ b/ios/Classes/SmileIDSmartSelfieCaptureView.swift @@ -22,6 +22,7 @@ class SmileIDSmartSelfieCaptureView: NSObject, FlutterPlatformView { let showAttribution = args["showAttribution"] as? Bool ?? true let allowAgentMode = args["allowAgentMode"] as? Bool ?? true let useStrictMode = args["useStrictMode"] as? Bool ?? false + let smileSensitivity = SmileSensitivity.from(args["smileSensitivity"] as? String) _viewModel = SelfieViewModel( isEnroll: false, @@ -48,6 +49,7 @@ class SmileIDSmartSelfieCaptureView: NSObject, FlutterPlatformView { allowAgentMode: allowAgentMode, showAttribution: showAttribution, useStrictMode: useStrictMode, + smileSensitivity: smileSensitivity, channel: _channel ) _childViewController = embedView(rootView, in: _view, frame: frame) @@ -66,6 +68,7 @@ struct SmileIDRootView: View { let allowAgentMode: Bool let showAttribution: Bool let useStrictMode: Bool + let smileSensitivity: SmileSensitivity let channel: FlutterMethodChannel static let shared = FileManager() private let fileManager = Foundation.FileManager.default @@ -124,7 +127,9 @@ struct SmileIDRootView: View { } } else { SelfieCaptureScreen( - viewModel: viewModel, allowAgentMode: allowAgentMode + viewModel: viewModel, + allowAgentMode: allowAgentMode, + smileSensitivity: smileSensitivity, ).preferredColorScheme(.light) } } diff --git a/ios/Classes/SmileIDSmartSelfieEnrollment.swift b/ios/Classes/SmileIDSmartSelfieEnrollment.swift index 78b847f1..a188f139 100644 --- a/ios/Classes/SmileIDSmartSelfieEnrollment.swift +++ b/ios/Classes/SmileIDSmartSelfieEnrollment.swift @@ -29,6 +29,7 @@ class SmileIDSmartSelfieEnrollment : NSObject, FlutterPlatformView, SmartSelfieR allowAgentMode: args["allowAgentMode"] as? Bool ?? false, showAttribution: args["showAttribution"] as? Bool ?? true, showInstructions: args["showInstructions"] as? Bool ?? true, + smileSensitivity: SmileSensitivity.from(args["smileSensitivity"] as? String), skipApiSubmission: args["skipApiSubmission"] as? Bool ?? false, extraPartnerParams: args["extraPartnerParams"] as? [String: String] ?? [:], delegate: self diff --git a/ios/Classes/SmileIDUtils.swift b/ios/Classes/SmileIDUtils.swift index 822428e6..56e38264 100644 --- a/ios/Classes/SmileIDUtils.swift +++ b/ios/Classes/SmileIDUtils.swift @@ -33,3 +33,16 @@ extension AutoCapture { } } } + +extension SmileSensitivity { + static func from(_ string: String?) -> SmileSensitivity { + switch string?.lowercased() { + case "normal": + return .normal + case "relaxed": + return .relaxed + default: + return .normal + } + } +} diff --git a/ios/smile_id.podspec b/ios/smile_id.podspec index 5f5593a3..f539b24a 100644 --- a/ios/smile_id.podspec +++ b/ios/smile_id.podspec @@ -12,7 +12,7 @@ Pod::Spec.new do |s| s.source = { :path => '.' } s.source_files = 'Classes/**/*' s.dependency 'Flutter' - s.dependency 'SmileID', '11.1.3' + s.dependency 'SmileID', '11.1.4' # for development alongside sample/ios/Podfile uncomment the version and specify # tag or branch in sample/ios/Podfile # s.dependency "SmileID" diff --git a/lib/products/capture/smile_id_smart_selfie_capture_view.dart b/lib/products/capture/smile_id_smart_selfie_capture_view.dart index 64a5a5ae..d27cbf8a 100644 --- a/lib/products/capture/smile_id_smart_selfie_capture_view.dart +++ b/lib/products/capture/smile_id_smart_selfie_capture_view.dart @@ -1,4 +1,5 @@ import 'package:flutter/widgets.dart'; +import 'package:smile_id/products/models/model.dart'; import '../../views/smile_view.dart'; @@ -24,6 +25,7 @@ class SmileIDSmartSelfieCaptureView extends StatelessWidget { bool showAttribution = true, bool allowAgentMode = true, bool useStrictMode = false, + SmileSensitivity smileSensitivity = SmileSensitivity.normal, required Function(String resultJson) onSuccess, required Function(String errorMessage) onError, }) { @@ -36,6 +38,7 @@ class SmileIDSmartSelfieCaptureView extends StatelessWidget { "showAttribution": showAttribution, "allowAgentMode": allowAgentMode, "useStrictMode": useStrictMode, + "smileSensitivity": smileSensitivity.name, }, ); } diff --git a/lib/products/models/model.dart b/lib/products/models/model.dart index 7ac945ed..ced7f678 100644 --- a/lib/products/models/model.dart +++ b/lib/products/models/model.dart @@ -3,3 +3,8 @@ enum AutoCaptureMode { autoCaptureOnly, manualCaptureOnly, } + +enum SmileSensitivity { + normal, + relaxed, +} diff --git a/lib/products/selfie/smile_id_smart_selfie_authentication.dart b/lib/products/selfie/smile_id_smart_selfie_authentication.dart index 21438226..bc90f835 100644 --- a/lib/products/selfie/smile_id_smart_selfie_authentication.dart +++ b/lib/products/selfie/smile_id_smart_selfie_authentication.dart @@ -1,6 +1,7 @@ import 'package:flutter/widgets.dart'; import '../../views/smile_view.dart'; +import '../models/model.dart'; class SmileIDSmartSelfieAuthentication extends StatelessWidget { static const String viewType = "SmileIDSmartSelfieAuthentication"; @@ -27,6 +28,7 @@ class SmileIDSmartSelfieAuthentication extends StatelessWidget { bool showAttribution = true, bool showInstructions = true, bool skipApiSubmission = false, + SmileSensitivity smileSensitivity = SmileSensitivity.normal, Map? extraPartnerParams, required Function(String resultJson) onSuccess, required Function(String errorMessage) onError, @@ -42,6 +44,7 @@ class SmileIDSmartSelfieAuthentication extends StatelessWidget { "showInstructions": showInstructions, "skipApiSubmission": skipApiSubmission, "extraPartnerParams": extraPartnerParams, + "smileSensitivity": smileSensitivity.name, }, ); } diff --git a/lib/products/selfie/smile_id_smart_selfie_enrollment.dart b/lib/products/selfie/smile_id_smart_selfie_enrollment.dart index 26e4fcd7..dcd8aa44 100644 --- a/lib/products/selfie/smile_id_smart_selfie_enrollment.dart +++ b/lib/products/selfie/smile_id_smart_selfie_enrollment.dart @@ -1,6 +1,7 @@ import 'package:flutter/widgets.dart'; import '../../views/smile_view.dart'; +import '../models/model.dart'; class SmileIDSmartSelfieEnrollment extends StatelessWidget { static const String viewType = "SmileIDSmartSelfieEnrollment"; @@ -27,6 +28,7 @@ class SmileIDSmartSelfieEnrollment extends StatelessWidget { bool showAttribution = true, bool showInstructions = true, bool skipApiSubmission = false, + SmileSensitivity smileSensitivity = SmileSensitivity.normal, Map? extraPartnerParams, required Function(String resultJson) onSuccess, required Function(String errorMessage) onError, @@ -42,6 +44,7 @@ class SmileIDSmartSelfieEnrollment extends StatelessWidget { "showInstructions": showInstructions, "extraPartnerParams": extraPartnerParams, "skipApiSubmission": skipApiSubmission, + "smileSensitivity": smileSensitivity.name, }, ); } diff --git a/pubspec.yaml b/pubspec.yaml index f6eddb1b..e6eef4b3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: smile_id description: The Official Smile ID Flutter SDK -version: 11.2.3 +version: 11.2.4 homepage: "https://usesmileid.com" environment: diff --git a/sample/ios/Podfile.lock b/sample/ios/Podfile.lock index 3d5757f9..7b5fc0be 100644 --- a/sample/ios/Podfile.lock +++ b/sample/ios/Podfile.lock @@ -8,12 +8,12 @@ PODS: - Sentry (8.57.1): - Sentry/Core (= 8.57.1) - Sentry/Core (8.57.1) - - smile_id (11.2.3): + - smile_id (11.2.4): - Flutter - - SmileID (= 11.1.3) - - SmileID (11.1.3): - - SmileIDSDK (= 11.1.3) - - SmileIDSDK (11.1.3): + - SmileID (= 11.1.4) + - SmileID (11.1.4): + - SmileIDSDK (= 11.1.4) + - SmileIDSDK (11.1.4): - FingerprintJS (= 1.6.0) - Sentry (= 8.57.1) - ZIPFoundation (= 0.9.20) @@ -39,11 +39,11 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: FingerprintJS: 3a0c3e7f5035ecae199e5e5836200d9b20f1266a - Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 Sentry: ea4ca7cd1a46c77dcc8123804ce36d8f5603a841 - smile_id: d74d72d2c1faf8efe22b0fd092621dfa73d1c668 - SmileID: ba24cf68edfaecebec15997a1f493427dad21b1c - SmileIDSDK: e648d298cf8d9af10292836e4f861aba03eff374 + smile_id: c3cec986622db9bfdd820485a235db17c5c4c3b3 + SmileID: 00051ebe470396c06502c3f0941dee66006cdfb2 + SmileIDSDK: 1fd9712e8b7b653e3d10ee08d336b150e5928488 ZIPFoundation: dfd3d681c4053ff7e2f7350bc4e53b5dba3f5351 PODFILE CHECKSUM: 81be4fc09878044dc75c762493ad56e861d5bf57 diff --git a/sample/lib/main.dart b/sample/lib/main.dart index 9e675fbe..7b309d9b 100644 --- a/sample/lib/main.dart +++ b/sample/lib/main.dart @@ -225,6 +225,7 @@ class MainContent extends StatelessWidget { MaterialPageRoute( builder: (BuildContext context) => MyScaffold( body: SmileIDSmartSelfieEnrollment( + smileSensitivity: SmileSensitivity.normal, onSuccess: (String? result) { // Your success handling logic Map jsonResult = json.decode(result ?? '{}'); @@ -256,6 +257,7 @@ class MainContent extends StatelessWidget { MaterialPageRoute( builder: (BuildContext context) => MyScaffold( body: SmileIDSmartSelfieAuthentication( + smileSensitivity: SmileSensitivity.normal, onSuccess: (String? result) { // Your success handling logic Map jsonResult = json.decode(result ?? '{}'); @@ -388,6 +390,7 @@ class MainContent extends StatelessWidget { showAttribution: false, allowAgentMode: false, useStrictMode: false, + smileSensitivity: SmileSensitivity.normal, onSuccess: (String? result) { // Your success handling logic Map jsonResult = json.decode(result ?? '{}'); diff --git a/sample/pubspec.lock b/sample/pubspec.lock index 9c04c1ac..9490d2f5 100644 --- a/sample/pubspec.lock +++ b/sample/pubspec.lock @@ -102,26 +102,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" url: "https://pub.dev" source: hosted - version: "11.0.2" + version: "10.0.9" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.10" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.1" lints: dependency: transitive description: @@ -197,7 +197,7 @@ packages: path: ".." relative: true source: path - version: "11.2.3" + version: "11.2.4" source_span: dependency: transitive description: @@ -250,18 +250,18 @@ packages: dependency: transitive description: name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.6" + version: "0.7.4" vector_math: dependency: transitive description: name: vector_math - sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.1.4" vm_service: dependency: transitive description: @@ -279,5 +279,5 @@ packages: source: hosted version: "3.1.0" sdks: - dart: ">=3.8.0-0 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.18.0-18.0.pre.54"