用途:该技能用于在 Kotlin Multiplatform(KMP)/ Compose Multiplatform 项目中集成 Scandit 的 ID Capture(IdCapture),完成身份证件扫描与信息读取。资料强调 KMP SDK 较新,不能用原生 Android、iOS、Flutter、.NET 或 Web SDK 的类型与工厂名做模式匹配,否则会产出无法编译的代码;写代码前须核对技能内提供的参考。
主要能力:Kotlin 包根为 com.kmp.datacapture.*(core 与 id),Gradle/Maven 坐标为 com.scandit.datacapture.kmp:<artifact>:<version>,两者不同。模式创建用 IdCapture.forContext(dataCaptureContext, settings);设置用伴生工厂 IdCaptureSettings.idCaptureSettings(),而非裸构造器。扫描器类型通过 settings.scannerType 赋值,直接传具体扫描器值,如 FullDocumentScanner()(双面/全部区域)、SingleSideScanner(barcode, machineReadableZone, visualInspectionZone, freeFormText=false)(含 KMP 特有的第 4 个参数)、MobileDocumentScanner(...)(mDL/ISO 18013-5)。KMP 的 scannerType 只能持有一个扫描器,不支持物理证件与移动证件组合扫描。
结果与校验:CapturedId 提供 sexType(Sex 枚举)、mrz/viz/barcode/mobileDocument/mobileDocumentOcr 等区域结果,以及 verificationResult。AAMVA 防伪、数据一致性与作废证件检测不是独立类,而是通过 settings.rejectForgedAamvaBarcodes、rejectInconsistentData、rejectVoidedIds 等开关驱动;对应的 id-aamva-barcode-verification、id-europe-driving-license、id-voided-detection 是纯依赖容器,本身没有 Kotlin API 可导入,缺少依赖时设置项在运行时不生效。
使用方式:大部分逻辑放在 commonMain 的共享 ScreenModel/视图模型中,仅视图承载与生命周期在 androidApp 与 iosApp 分别处理。需监听 onIdCaptured 与 onIdRejected,回调可能不在主线程,UI 状态更新须通过共享 StateFlow 模式派发。扫描需要 Scandit 许可证密钥,产品为 native,平台为 ios 与 android。
限制:NFC、反序列化等原生专有接口不在 KMP 范围内;Compose 场景可用 id-compose 模块的 IdCaptureView。非 ID Capture 问题(条码、SparkScan、MatrixScan、标签等)应转其它技能;技能未提供迁移指南,因为 KMP SDK 无旧主版本。具体 URL 与安装命令未在资料中提供。