authme_ekyc_sdk
Flutter plugin for the AuthMe eKYC SDK: OCR-based identity document recognition (Taiwan + 12 other regions), liveness detection, and NFC passport verification on iOS and Android.
What this package is like to depend on
Last release 2 months ago
10 Jun 2026
Release timing varies
gaps range from 8 days to 4 months
Some releases are documented
notes for 24 of 53 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
53 releases · first in 2024
21 releases in the last 12 months
see the full history below
Release timeline
53 releases · Oct 2024 to Jun 2026Releases
latest 53-
3.0.110 Jun 2026Release notes
Open source →🔧 技術改進
- Android: AuthMe SDK 升級至 2.8.2。
- 三項 OCR 啟動時序相關 fatal crash(ModelRepository UnInitialized / stepFlows empty / lateinit remoteParams)收斂為正常結束 + 明確錯誤碼回傳,不再 native fatal exception。
🛡️ 強化
- Android Plugin:
startFeature進場除原本的isAuthMeInitialized旗標檢查外,新增AuthMe.context != null雙重保險。- 解決 process 被系統回收後 plugin instance 旗標仍為 true 但 AuthMe 內部 static context 已 null,導致 OCR Activity 啟動瞬間取不到 ModelRepository 而 crash 的 race condition。
- 搭配上方 Android SDK 兜底修正,徹底處理 OCR 啟動時序相關 crash。
📝 整合方提醒(Best Practices)
為避免無謂的 Activity 啟動/立即 finish 閃跳,建議整合方 Flutter 端配合:
await initialize()完成才 enable OCR 入口按鈕(init 進行中或失敗時 disable 或提示重試)- OCR 進行中以
PopScope(canPop: false)攔截使用者返回,或維護自家「OCR in-progress」狀態 - 接住
startFeature拋出的PlatformException與resultStream上的{error: ...}event 做對應 UI 處理
提醒:native fatal exception 無法用 Dart 的 try-catch 攔截,必須靠 plugin 回傳 event + 整合方狀態管理這條路。
- Android: AuthMe SDK 升級至 2.8.2。
-
3.0.009 Jun 2026Release notes
Open source →⚠️ Breaking Changes
- iOS: 移除 CocoaPods 安裝路徑,改為純 Swift Package Manager。
- 不再提供
authme_ekyc_sdk.podspec,原本透過AuthMe01/PodSpecs.git取得的 pod 路線停用。 - 需要 Flutter 3.32+ 且 SPM 啟用(3.32+ 預設啟用)。
- 升級指引請見 README「iOS Setup」章節。
- 不再提供
🚀 新功能與改進
- iOS: AuthMeSPM 升級至 2.9.20(AuthMe / AuthMeUI 2.9.20、AuthmeNFCKit 2.0.10、Algo / OpenSSL 9.0.32)。
- Android: AuthMe SDK 升級至 2.8.1(原 2.8.0-rc.200)。
- Flutter Plugin:
- Plugin 重新組織為 SPM 標準佈局(
ios/authme_ekyc_sdk/Package.swift+Sources/),PrivacyInfo.xcprivacy移入 SPM target resources。 - iOS NFC reader UI 跟著
setLocale切換語系(原本寫死繁中)。 SSLConfig在 init 階段做基本檢查,設定錯誤印警告但不擋 init。AuthmeSdk/SSLConfig/AuthmeLocale補完 Dartdoc。
- Plugin 重新組織為 SPM 標準佈局(
🔧 技術改進
- Android:
AuthmeFeaturerawValue 對齊 Dart enum,原本非台灣地區的 feature 在 Android 全部回 INVALID_FEATURE,現在恢復可用。onActivityResult改依 dispatched feature 選 result extractor,不再用 try/catch 當 control flow。coroutineScope.cancel()on engine detach,修 in-flight coroutine leak。
- iOS:
- ~70 個
print(...)收進#if DEBUGhelper,release build 不再 leak token prefix、device identifier 等 PII 到 NSLog。
- ~70 個
- Dart:
- Diagnostic logging 收進
kDebugMode;token logging 安全化,短 token 不再RangeError。
- Diagnostic logging 收進
- Build / CI:
publish_to_pub_dev.yml加入 pubspec / tag /android/build.gradle/ CHANGELOG 版本一致性檢查。pr_validation.yml移除pod install,新增 SPM enable step。- 新增
Customer Env Build Checkworkflow,乾淨環境驗證 plugin 能 build。 - pubspec.yaml 補
repository/issue_tracker/topics;android/build.gradle版本對齊 (3.0.0)。
🐛 修復問題
- iOS FlutterResult 契約:
setLocale/refreshToken補上result(nil),原本 Dart Future 永遠 hang。initialize的URL(string:)!改guard let,原本 bad serverURL 會 crash host app。AuthMeCore.build()失敗改為回INITIALIZATION_FAILED,原本錯誤被 print 吞掉。confirmScanResult的forEach改為 typedfor-in,原本 bad arg 會 double-call FlutterResult。startFeature的flow.exception改走 result stream,避免與同步result(nil)衝突 double-call。
- 兩平台:
lastOCRResult在新startFeature進場時清掉,避免舊 scan 資料被 commit。 - iOS:
coordinatorDidFinishScan補上外層 modal 的 dismiss + 結束時若無 result 交付則自動發 cancellation 解鎖。原本 Flutter host 沒 UINavigationController 時 SDK 把.pushfallback 成 modal 呈現,scan 結束後 modal 不會自己消失;另一個常見情境是使用者在 Liveness 半途點返回,SDK 不會走.canceleddelegate,Dart 端的 in-progress 鎖永遠不解、下一次 startFeature 被 silently 拒絕。兩個問題一起修。 - README 校對:刪除程式碼裡不存在的
enableDebug/setErrorHandler/customizeUI/stopNFCPassportScan;setLocale範例改為AuthmeLocale.zhHant;Liveness 結果格式說明改為忠實反映兩平台現狀。 - example app 不再寫死
client_secret,改為讀String.fromEnvironment('AUTHME_CLIENT_SECRET')。 - 移除過時腳本
create_pubspec.sh/ios/create_podspec.sh;example 的.cxx/build artifact 退 git。 - 單元測試:
test/ekyc_sdk_test.dart與AuthmeEkycSdkPluginTest.kt從 stub 換為實質覆蓋AuthmeFeaturerawValue /AuthmeLocale字串映射 /SSLConfigwire 格式。
⚠️ 已知議題
- iOS Liveness 結果為 raw string(
succeed/failed/unknown),與 Android 的{result: "success"}不一致,跨平台 shape 對齊列為下一個 minor 的 breaking change。建議目前用final passed = value == 'success' || value == 'succeed';同時相容。 captureTimeout參數目前兩平台都不會生效(native SDK 尚未提供對應 builder method)。
ℹ️ Migration Note
若你下游 app 還在 Flutter
<3.32或刻意關閉了 SPM,請繼續使用^2.8.x,本版不相容。 - iOS: 移除 CocoaPods 安裝路徑,改為純 Swift Package Manager。
-
2.8.2111 May 2026Release notes
Open source →🔧 技術改進
- Android:
- AuthMe SDK 升級至 2.8.0-rc.200
- Flutter Plugin (Android):
TWIDFraudfeature 補上TWN_IDCard_Front步驟,修正init-scan-doc回 400 的問題startFeature進場先OCRFactory.disablePlugin()清除前一輪註冊的 plugin,避免狀態殘留
🐛 修復問題
- 修正 host app 整合 SDK 時的多項 crash
- 修正
AgreementActivity/ConfirmPhotoActivity在非 AppCompat theme host 下的IllegalStateException - 修正 OCR 流程在 process death 後重啟導致的
UnInitialized/lateinit remoteParams/stepFlows is emptycrash - 修正
OCRResultActivity/OCRResultComposeActivity/NfcResultActivity在 intent extra 缺失時的NullPointerException
- 修正
- 修正 OCR 結果頁(如護照流程)確認按鈕初始 disabled 卡住,需點欄位才會亮起的問題
⚠️ 已知議題
AuthmeFeature.NFCPassport(護照 NFC 讀取)目前無法完成讀取,預計下一版修正。需要護照辨識請暫時改用AuthmeFeature.Passport(純 OCR 流程)。
- Android:
-
2.8.2010 May 2026Nothing published for this version
-
2.8.1922 Jan 2026Release notes
Open source →🔧 技術改進
- Android:
- AuthMe SDK 升級至 2.8.0-rc.189
- 改善初始化流程錯誤處理
🐛 修復問題
- 修正
IndexOutOfBoundsException崩潰問題- 修正 USAVisitorVISA 的 OCRStepType 設定
- 新增 startFeature 操作鎖,防止連續快速呼叫導致的競態條件
- 新增空步驟列表檢查,避免傳入無效配置
- 新增 Activity 生命週期狀態重置
- Dart 層新增初始化狀態追蹤和超時自動重置機制
- Android:
-
2.8.1819 Jan 2026 -
2.8.1619 Dec 2025 -
2.8.1508 Dec 2025 -
2.8.1404 Dec 2025Nothing published for this version
-
2.8.1303 Dec 2025Nothing published for this version
-
2.8.1203 Dec 2025Nothing published for this version
-
2.8.1103 Dec 2025Nothing published for this version
-
2.8.1001 Dec 2025 -
2.8.929 Oct 2025Release notes
Open source →🚀 新功能與改進
- Android 16 KB 頁面對齊支援: 啟用
useLegacyPackaging = false以支援 Android 15+ 的新頁面大小要求 - 依賴版本升級:
- Kotlin 升級至 2.1.20
- Gradle Plugin 升級至 8.13.0
- Lottie 升級至 6.3.0
- AuthMe SDK 升級至 2.8.0-rc.178 (Android) / 2.8.42 (iOS)
🔧 技術改進
-
Android:
- compileSdk 升級至 35
- minSdk 提升至 24 (Android 7.0+)
- 改善 NFC plugin 初始化錯誤處理
- 新增使用前檢查機制,避免未初始化錯誤
- 加入詳細的錯誤日誌記錄
-
iOS:
- 更新 AuthMe、AuthMeUI 至 2.8.42
- 更新 AuthmeNFCKit 至 1.0.19
- 修正編譯錯誤 (localizedDescription)
-
Example App:
- Java 相容性升級至 17
- 改用本地 path 依賴以便開發測試
🐛 修復問題
- 修正 Android NFC plugin 未初始化導致的崩潰問題
- 修正 iOS Swift 編譯錯誤
- 修正 Java 版本過時警告
- Android 16 KB 頁面對齊支援: 啟用
-
2.8.821 Oct 2025Nothing published for this version
-
2.8.701 Oct 2025Nothing published for this version
-
2.8.626 Sep 2025Nothing published for this version
-
2.8.517 Sep 2025Nothing published for this version
-
2.8.417 Sep 2025Nothing published for this version
-
2.8.216 Sep 2025Nothing published for this version
-
2.8.101 Sep 2025Nothing published for this version
-
2.8.018 Jul 2025Release notes
Open source →🚀 新功能與改進
- iOS 依賴更新: 更新 AuthMe 和 AuthMeUI 到 2.8.35 版本
- 支援最新的 AuthMe SDK 功能
- 改善 iOS 平台的穩定性和效能
- 修復 XCFramework 連結問題
🔧 技術改進
- CocoaPods 配置優化:
- 添加 AuthMe 私有倉庫源配置
- 使用靜態框架連結方式解決依賴衝突
- 改善 iOS 編譯和連結流程
📱 平台特定改進
-
iOS:
- 修復 Git LFS 文件下載問題
- 優化 XCFramework 處理機制
- 改善靜態框架依賴管理
- Liveness Result 調整: 更新
LivenessResult類型引用,從AuthMeLivenessViewController.LivenessResult改為LivenessResult - 移除過時配置: 移除
captureTimeout配置項
-
Android:
- Liveness Result 調整: 更新
LivenessResult.Success為AuthMeResult.LivenessSuccess - OCR Result 調整: 修正 OCR 結果資料結構,從
result.map改為result.data - 效能優化: 改善
confirmScanResult的 coroutine 處理機制
- Liveness Result 調整: 更新
🐛 修復問題
- 修正 iOS 平台 XCFramework 連結錯誤
- 解決 AuthMe 依賴版本衝突問題
- 修復 Git LFS 文件未正確下載的問題
- 修復 Android 平台 OCR 結果資料結構不一致問題
- 修正 Liveness 結果處理的類型引用問題
- iOS 依賴更新: 更新 AuthMe 和 AuthMeUI 到 2.8.35 版本
-
2.7.1928 Mar 2025 -
2.7.1828 Mar 2025Nothing published for this version
-
2.7.1728 Mar 2025Nothing published for this version
-
2.7.1627 Feb 2025 -
2.7.1518 Feb 2025 -
2.7.1414 Feb 2025Release notes
Open source →- 移除前版 iOS Map 型態不支援 dynamic 的程式碼。
- 加入 Android activity result callback filter。
-
2.7.1305 Feb 2025 -
2.7.1223 Jan 2025 -
2.7.1115 Jan 2025 -
2.7.1014 Jan 2025Nothing published for this version
-
2.7.909 Jan 2025 -
2.7.808 Jan 2025 -
2.7.723 Dec 2024 -
2.7.616 Dec 2024 -
2.7.516 Dec 2024 -
2.7.405 Dec 2024Nothing published for this version
-
2.7.305 Dec 2024Nothing published for this version
-
2.7.219 Nov 2024 -
2.7.114 Nov 2024Nothing published for this version
-
2.7.014 Nov 2024 -
1.0.813 Nov 2024Nothing published for this version
-
1.0.713 Nov 2024Nothing published for this version
-
1.0.613 Nov 2024Nothing published for this version
-
1.0.507 Nov 2024Nothing published for this version
-
1.0.406 Nov 2024Nothing published for this version
-
1.0.301 Nov 2024Nothing published for this version
-
1.0.201 Nov 2024Nothing published for this version
-
1.0.131 Oct 2024Nothing published for this version
-
1.0.030 Oct 2024Nothing published for this version
-
0.1.025 Oct 2024Nothing published for this version
-
0.0.110 Oct 2024Nothing published for this version