feat(sdk): 重命名 owner→brand 并在硬绑前校验设备品牌

- DuooomiBleConfig.owner → brand(语义:设备品牌名),HTTP header x-owner 不变
- bind() 前置 verifyBrand:缺 deviceInfo 先 getDeviceInfo,与 config.brand 严格匹配,不一致主动断连并抛 .brandMismatch
- README 抹除软绑/对账/UpgradeRecord 等内部实现细节,仅保留厂商面向的公开 API(功能代码完全保留)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
km2023
2026-05-09 11:51:17 +08:00
parent d5729a1a41
commit 97e5b8359a
11 changed files with 81 additions and 109 deletions

View File

@@ -20,8 +20,8 @@ final class DemoViewModel: NSObject, ObservableObject, DuooomiBleSDKDelegate {
// MARK: - SDK Configdemo UserDefaults
@Published var configOwner: String {
didSet { defaults.set(configOwner, forKey: Self.keyOwner) }
@Published var configBrand: String {
didSet { defaults.set(configBrand, forKey: Self.keyBrand) }
}
@Published var configApiKey: String {
didSet { defaults.set(configApiKey, forKey: Self.keyApiKey) }
@@ -47,28 +47,28 @@ final class DemoViewModel: NSObject, ObservableObject, DuooomiBleSDKDelegate {
// MARK: - Internals
private let defaults = UserDefaults.standard
private static let keyOwner = "demo.config.owner"
private static let keyBrand = "demo.config.brand"
private static let keyApiKey = "demo.config.apiKey"
private static let keyScanPrefix = "demo.config.scanPrefix"
/// demo UserDefaults 使 DemoSecrets
private static let defaultOwner = DemoSecrets.owner
private static let defaultBrand = DemoSecrets.brand
private static let defaultApiKey = DemoSecrets.apiKey
private static let defaultScanPrefix = DemoSecrets.scanNamePrefix
override init() {
let d = UserDefaults.standard
let owner = d.string(forKey: Self.keyOwner) ?? Self.defaultOwner
let brand = d.string(forKey: Self.keyBrand) ?? Self.defaultBrand
let apiKey = d.string(forKey: Self.keyApiKey) ?? Self.defaultApiKey
let scanPrefix = d.string(forKey: Self.keyScanPrefix) ?? Self.defaultScanPrefix
self.configOwner = owner
self.configBrand = brand
self.configApiKey = apiKey
self.configScanPrefix = scanPrefix
self.sdk = DuooomiBleSDK(config: .init(
apiKey: apiKey,
owner: owner,
brand: brand,
scanNamePrefix: scanPrefix
))
@@ -82,7 +82,7 @@ final class DemoViewModel: NSObject, ObservableObject, DuooomiBleSDKDelegate {
func reloadSDK() {
let new = DuooomiBleSDK(config: .init(
apiKey: configApiKey,
owner: configOwner,
brand: configBrand,
scanNamePrefix: configScanPrefix
))
new.delegate = self