用途
本技能用于在非 MAUI 的 .NET for iOS 项目(目标框架为 net*-ios,例如 net10.0-ios,且未设置 UseMaui)中集成 Scandit MatrixScan Batch 功能。MatrixScan Batch 是 Scandit 的多条形码扫描与跟踪模式,旧称 BarcodeTracking,自 SDK v7.0 起更名为 BarcodeBatch。该技能帮助开发者一次性识别视野内的多个条形码并持续跟踪其位置。
主要能力
- 创建并配置 BarcodeBatch 捕获模式,启用所需条码符号(如 Ean13Upca、Code128、Qr、DataMatrix 等)。
- 手动配置相机:Camera.GetDefaultCamera() → dataCaptureContext.SetFrameSourceAsync(camera) → camera.ApplySettingsAsync(BarcodeBatch.RecommendedCameraSettings)。
- 通过 IBarcodeBatchListener.OnSessionUpdated 或 BarcodeBatch.SessionUpdated 事件处理跟踪结果,获取 AddedTrackedBarcodes、UpdatedTrackedBarcodes、RemovedTrackedBarcodes、TrackedBarcodes 等会话数据。
- 使用 BarcodeBatchBasicOverlay 绘制基础叠加层(Frame 或 Dot 样式),可设置统一画笔或按条码定制画笔(后者需 MatrixScan AR 附加许可)。
- 使用 BarcodeBatchAdvancedOverlay 将自定义 UIView 锚定到被跟踪的条码上(需 MatrixScan AR 附加许可)。
- 支持从 v6 迁移到 v7、v7 迁移到 v8,以及从第三方多码扫描方案(如 AVFoundation、ZXing.Net.Mobile)迁移。
使用方式
技能以参考文档形式组织,根据用户请求路由到不同参考文件:
- 从零集成、配置设置、处理跟踪条码、定制叠加层、锚定自定义 UIView、管理相机生命周期或诊断预览卡顿 → 阅读 references/integration.md。
- 迁移或升级现有集成(如 v6 到 v7、重命名 BarcodeTracking 为 BarcodeBatch、升级到 v8)→ 阅读 references/migration.md。
- 替换第三方多码扫描器 → 阅读 references/third-party-migration.md。
许可证密钥获取流程:优先通过 Scandit MCP 服务器调用 ensure_scanner_setup(product 为 native,platforms 为 ios),然后执行返回的命令将密钥写入项目 .env;若 MCP 未连接,可提供 Claude Code、Cursor、VS Code 的 MCP 配置方式,或引导用户在 https://ssl.scandit.com 自行生成密钥。密钥需放入代码中,.env 不会自动被 .NET 加载。
适用场景
- 在 .NET for iOS 应用中实现多条形码同时扫描。
- 在相机预览中高亮显示被跟踪的条码。
- 将价格标签等自定义 UI 元素锚定到每个被跟踪的条码上。
- 从旧版 BarcodeTracking 或第三方扫描方案迁移到 MatrixScan Batch。
限制与注意事项
- 仅适用于非 MAUI 的 .NET for iOS 项目;MAUI 项目应使用 matrixscan-batch-net-maui 技能(计划中)。
- 必须使用工厂方法 BarcodeBatch.Create(...)、BarcodeBatchSettings.Create()、BarcodeBatchBasicOverlay.Create(...)、BarcodeBatchAdvancedOverlay.Create(...),构造函数为私有。
- BarcodeBatch.RecommendedCameraSettings 是静态属性而非方法。
- OnSessionUpdated 在后台识别队列运行,UI 操作需通过 DispatchQueue.MainQueue.DispatchAsync 派发。
- 每次 OnSessionUpdated 回调(包括提前返回路径)必须调用 frameData.Dispose(),否则视频流可能冻结、无响应或严重卡顿。
- 不得在 OnSessionUpdated 之外持有 BarcodeBatchSession 或其集合的引用。
- 按条码定制画笔和高级叠加层需要 MatrixScan AR 附加许可。
- BarcodeBatchLicenseInfo 仅 dotnet.ios 8.4+ 可用。
- iOS SupportedOSPlatformVersion 必须 ≥ 15.0。
- Info.plist 必须包含 NSCameraUsageDescription,否则首次访问相机时崩溃。
- SDK 8.0+ 需在 AppDelegate.FinishedLaunching 中调用 ScanditCaptureCore.Initialize() 和 ScanditBarcodeCapture.Initialize()。
- NuGet 包为 Scandit.DataCapture.Core 和 Scandit.DataCapture.Barcode,版本需从 NuGet 获取最新稳定版,不可猜测。
- 仅使用文档中明确记录的 API,不得编造方法签名或属性名。