feat(sdk): OTA 升级流程对齐 expo + 拆 extension 文件分层 + 秘钥本地化
主要改动: - 新增 fetchLatestFirmware/upgradeFirmware/tryReportPendingUpgrade 三段 OTA 接口,对齐 expo bindDeviceWithOrchestration 行为 - bind 仅做硬绑+getVersion,软绑/对账上报/拉最新固件搬到 fetchLatestFirmware 内部串;软绑失败自动硬解回滚 - UpgradeRecord 复合主键 (sn, firmwareId) 持久化 + sn 级 in-flight 互斥 - DuooomiBleSDKDelegate 新增 didUpdateUpgradeRecords,集成方 可观察对账上报结果(reported/outcome 状态) - DuooomiBleSDK 主类按职责拆 5 个 extension 文件,公开 API 不变 - TargetFirmware 简化为只取必要字段 + 新增 forceUpgrade - scanNamePrefix 改为必填 String - demo 秘钥移至本地 DemoSecrets.swift (gitignored) - README 重写:完整 OTA 流程示例 + 上报状态判定表 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,38 +4,38 @@ import Foundation
|
||||
public struct DuooomiBleConfig {
|
||||
/// API 服务地址
|
||||
public let apiHost: URL
|
||||
/// API 鉴权 key
|
||||
/// API 鉴权 key(Loomart x-api-key)
|
||||
public let apiKey: String
|
||||
/// 多租户 owner 标识,所有 RPC 必带 `x-owner` header
|
||||
public let owner: String
|
||||
/// CDN 资源地址(末尾带 `/`)
|
||||
public let cdnHost: String
|
||||
/// 固件查询标识,如 "duomi"
|
||||
public let firmwareIdentifier: String
|
||||
/// 固件查询状态,如 "DRAFT" / "PUBLISHED"
|
||||
public let firmwareStatus: String
|
||||
/// ANI 转换宽度(像素)
|
||||
public let aniWidth: Int
|
||||
/// ANI 转换高度(像素)
|
||||
public let aniHeight: Int
|
||||
/// ANI 转换帧率
|
||||
public let aniFps: String
|
||||
/// 扫描时按设备蓝牙广播名前缀过滤(大小写不敏感)。**必填**,由集成方约定固件广播名前缀。
|
||||
public let scanNamePrefix: String
|
||||
|
||||
public init(
|
||||
apiHost: URL = URL(string: "https://api.duooomi.com")!,
|
||||
apiKey: String,
|
||||
owner: String,
|
||||
cdnHost: String = "https://cdn.bowong.cc/",
|
||||
firmwareIdentifier: String = "duomi",
|
||||
firmwareStatus: String = "DRAFT",
|
||||
aniWidth: Int = 360,
|
||||
aniHeight: Int = 360,
|
||||
aniFps: String = "24"
|
||||
aniFps: String = "24",
|
||||
scanNamePrefix: String
|
||||
) {
|
||||
self.apiHost = apiHost
|
||||
self.apiKey = apiKey
|
||||
self.owner = owner
|
||||
self.cdnHost = cdnHost.hasSuffix("/") ? cdnHost : cdnHost + "/"
|
||||
self.firmwareIdentifier = firmwareIdentifier
|
||||
self.firmwareStatus = firmwareStatus
|
||||
self.aniWidth = aniWidth
|
||||
self.aniHeight = aniHeight
|
||||
self.aniFps = aniFps
|
||||
self.scanNamePrefix = scanNamePrefix
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user