SuperAPI AI 工具集

sparkscan-net-ios

编程与开发

查看项目

更新于 10-16 03:31

技能介绍

用途

本技能用于在 .NET for iOS 项目(net*-ios 目标框架,非 MAUI)中集成 Scandit SparkScan 单条码扫描功能,并使用预置的 SparkScanView 界面组件。针对 MAUI 应用,应改用 sparkscan-net-maui 技能。

技能开篇即强调:不要信任内部知识。训练数据可能包含过时或错误的 Scandit SDK API,SparkScan API 在主要 SDK 版本间会发生变化,按钮可见性和颜色属性可能被重命名、移除或重构。.NET 绑定使用与 Swift/Obj-C 原生 SDK 不同的命名约定(PascalCase、Enabled 而非 isEnabled、TimeSpan 而非 TimeInterval),且部分命名与该 .NET API 的其余部分不一致。技能要求在编写或建议代码前始终对照其提供的参考进行验证。

主要能力与内容

技能按用户意图路由到不同的参考文件:

  • 从零集成 SparkScan、配置设置、自定义反馈、自定义 SparkScanView 外观、处理扫描、扫描后异步操作、将扫描条码显示为列表 → 阅读 references/integration.md
  • 迁移或升级现有 SparkScan 集成(如 v6 到 v7、升级到 v8)→ 阅读 references/migration.md
  • 用 SparkScan 替换第三方条码扫描器(如 ZXing.Net.Mobile、AVFoundation)→ 阅读 references/third-party-migration.md

技能列出的 .NET for iOS 特有注意事项包括:

  • 目标为非 MAUI 的 .NET for iOS 工作负载。
  • SparkScan 与 SparkScanSettings 使用普通 new 构造函数,而非 Create(...) 工厂;写法为 var settings = new SparkScanSettings(); var sparkScan = new SparkScan(settings);。SparkScanView.Create(parent, context, sparkScan, settings) 则是工厂。
  • iOS 上 parent 参数即 this.View,创建后的视图会自动加入父视图,无需自行调用 AddSubview。
  • iOS 生命周期使用 ViewWillAppear 中的 PrepareScanning() 与 ViewWillDisappear 中的 StopScanning();不要使用 Android 专有的 OnPause/OnResume。
  • 需选择与控制器实例化方式匹配的 UIViewController 构造函数,否则相机预览不会出现。
  • Info.plist 中的 NSCameraUsageDescription 为必需项。
  • ISparkScanListener 仅有 OnBarcodeScanned 与 OnSessionUpdated 两个方法。
  • 惯用 C# 建议优先使用事件 API(sparkScan.BarcodeScanned += handler)。
  • iOS 上 IFrameData 与图像缓冲必须 Dispose()。
  • 符号名称为 C# PascalCase(如 Symbology.Ean13Upca)。
  • CodeDuplicateFilter 为 TimeSpan。
  • 反馈通过 ISparkScanFeedbackDelegate.GetFeedbackForBarcode(Barcode) 提供。
  • SDK 8.0+ 需在 AppDelegate.FinishedLaunching 中显式初始化。
  • NuGet 包为 Scandit.DataCapture.Core 与 Scandit.DataCapture.Barcode,且不应从训练数据猜测版本,需从 NuGet 获取最新稳定版。
  • HardwareTriggerSupported 与 HardwareTriggerKeyCode 为 Android 专有,iOS 代码中不要引用。

使用方式

用户提出相关请求时,技能根据意图加载对应参考文件后再响应,并要求只使用参考资料中明确记录的 API,不猜测方法签名、参数或属性名。回答后应附上相关链接。若遇到不确定的 API 或编译错误,应先抓取相关参考页面,而非让用户自行查文档。

关于许可证密钥:扫描需要 Scandit 许可证密钥。技能给出按顺序处理的流程——若 Scandit MCP 服务器已连接,调用 ensure_scanner_setup(product 为 native、platforms 为 ios),再执行 get_license_env_command 返回的命令写入项目 .env;若未连接,可提供连接方式(Claude Code、Cursor、VS Code 的 MCP 配置命令/片段),或由用户自行在 https://ssl.scandit.com 生成密钥。密钥在聊天中只显示掩码预览。

参考文献

技能指向的资源包括:Get Started(.NET for iOS)、Advanced Configurations、迁移指南(6 → 7、7 → 8)、完整 API 参考(SparkScan API .NET iOS)。并列出技能覆盖的 API 表面,涵盖 SparkScan、SparkScanSettings、SparkScanSession、SparkScanEventArgs、ISparkScanListener、SparkScanLicenseInfo、各类反馈类、SparkScanView、SparkScanViewSettings、SparkScanToastSettings 以及若干枚举。

适用场景

适用于在 .NET for iOS 应用中添加或配置 SparkScan 条码扫描、自定义扫描反馈与界面、处理扫描结果并展示列表、进行 SDK 版本迁移,或从第三方扫码库切换到 Scandit 的开发场景。

限制

技能未提供具体价格、收费、平台支持范围、扫描效果或性能数据,这些事实暂未提供。目标框架与 NuGet 版本等具体内容需以最新官方文档与 NuGet 为准。