• iOS SDK,用于离线 QR 扫描和带有加密签名和日志记录的票据验证(Swift、iOS 15+)

    1 天 前
    • 所需预算高达 900.51 USD
    • 等待表演者...
  • 初始情况:我们有一个用于控制事件访问的 iOS 应用程序。目前,门票是通过服务器检查的,这就是为什么在网络较差的场所会出现排队现象。我们需要创建一个内部 iOS SDK 模块,使我们能够完全离线验证票证并稍后同步结果。

    技术环境和主题领域:iOS 15+、Swift 5.9+、Xcode 15+、SPM。扫描 - AVFoundation。存储 - CoreData 或 SQLite(我们将讨论它,但我们需要离线工作并防止崩溃)。密码学 - CryptoKit。票证格式为 QR,位于 JSON 形式的 base64url 有效负载内。验证 - Ed25519 签名验证和规则验证(事件、日期、区域、重用)。

    结果应该是什么:1) Swift Package (SPM),带有可以连接到我们的应用程序的公共 API。 2) 集成示例(存储库内的小型演示目标或示例应用程序)仅用于显示 API 调用和数据流。 3)一套单元测试和关键部分的基本性能测试(解析、验证、事件记录)。

    功能需求: 1) 通过 AVFoundation 进行 QR 扫描,支持连续流 - 以结构化对象的形式返回结果(ticketId、eventId、zoneId、issuedAt、validFrom、validTo、signature)。 2) 离线验证-使用事件的公钥验证Ed25519签名,验证时间窗口和区域,防止票据在一台设备上重复使用(本地反重复使用)。 3) 事件队列-所有扫描尝试和决策(接受/拒绝+原因)都写入本地存储,并可以稍后批量上传。 4) 同步 - 一种接受回调/协议以将数据包发送到我们的 API 的 SDK 方法(我们有自己的网络层,因此 SDK 不应强加特定的 HTTP 库)。应该重传、重复数据删除和成功发送事件的标记。 5) 密钥管理——更新一组公共密钥的能力通过配置并保存在本地的私钥(例如,多个 eventId 的密钥)。必须有一个配置版本和一个安全的替换版本,且不会丧失验证先前签发的票据的能力。

    限制: 1) 扫描时严格脱机工作 - 扫描时没有网络请求。 2) 您不能使用第三方重型 SDK 进行扫描或数据库 - 只能使用标准 Apple 框架或通过 SPM 达成一致的非常轻型依赖项。 3) 包的公共 API 应尽可能少并记录在注释中 (SwiftDoc)。 4)代码必须兼容iOS 15及更高版本,无私有API。

    验收标准(可衡量): 1) 在发布版本的 iPhone 12 上,通过签名验证验证正确票据的时间不超过 30 毫秒,平均运行 100 次。 2) SDK 正确拒绝至少 6 种类型的错误,并提供明确的代码/原因 - 签名不正确、过期、尚未激活、无效区域、重用、未知 eventId/key。 3)经过500次离线扫描后,所有事件都在队列中可用,并且当应用程序被强制终止(kill)然后重新启动时不会丢失。 4) 单元测试覆盖至少 70% 的解析/验证/队列逻辑(使用 Xcode 覆盖)。 5) 示例集成演示:启动扫描仪、获取结果、调用验证、记录事件并开始同步。

    实施阶段: 1)明确有效负载格式和同步协议,固定公共API SDK。 2)核心实现——解析器、密码验证、验证规则。 3)存储和事件队列+去重的实现。 4) 扫描仪集成、样本、测试和优化。

    我们将提供:QR 有效负载示例、测试 Ed25519 密钥、用于上传事件的模拟 API 规范以及按区域/时间划分的业务规则列表。
  • How would you rate this task?

    Sign in to leave your rating.

    Total ratings: 0

您的报价

您尚未提交此订单的报价。
点击“提交报价”发送您的报价。

需要类似的任务吗?

如果该项目接近您的需求,您可以查看该类别中的现成服务或发布您自己的任务以及所需的预算、截止日期和要求。

The project «iOS SDK,用于离线 QR 扫描和带有加密签名和日志记录的票据验证(Swift、iOS 15+)» can be used as a reference for your own brief: what should be done, what result is needed and what budget to set.