ba0a80e9214325a8d29a8f37b8d9b9f562a497b1
DuooomiBleSDK (iOS)
纯原生 Swift BLE SDK,零第三方依赖。
集成
// Package.swift
dependencies: [
.package(path: "../duooomi-ios-sdk")
]
初始化
let sdk = DuooomiBleSDK(config: .init(
apiKey: "your-api-key" // 必填
// apiHost: URL(...)!, // 默认 https://api.mixvideo.bowong.cc
// cdnHost: "https://cdn.bowong.cc/", // 默认
// firmwareIdentifier: "duomi", // 默认
// firmwareStatus: "DRAFT" // 默认
))
API
扫描
| 方法 | 返回 | 说明 |
|---|---|---|
scan() |
Void |
开始扫描,结果通过 discoveredDevices 观察 |
stopScan() |
Void |
停止扫描 |
连接
| 方法 | 返回 | 说明 |
|---|---|---|
connect(deviceId: String) |
DiscoveredDevice |
连接设备 |
disconnect() |
Void |
断开连接 |
getConnectedDevices() |
[DiscoveredDevice] |
获取系统已连接设备 |
设备命令
| 方法 | 返回 | 说明 |
|---|---|---|
getDeviceInfo() |
DeviceInfo |
品牌、容量、电量、型号 |
getVersion() |
VersionInfo |
固件版本 |
bind(userId: String) |
BindingResponse |
绑定设备,返回 sn + 文件列表。绑定后才能查看设备文件 |
unbind(userId: String) |
UnbindResponse |
解绑设备。解绑后该账号的设备文件将被删除 |
deleteFile(key: String) |
DeleteFileResponse |
删除设备上的单个文件 |
文件传输
| 方法 | 返回 | 说明 |
|---|---|---|
transferMedia(fileUrl: String) |
Void |
输入文件 URL(mp4/jpg/png),内部自动完成 ANI 转换 → prepare → 传输。进度通过 transferProgress 观察 |
固件升级
| 方法 | 返回 | 说明 |
|---|---|---|
fetchLatestFirmware(identifier:status:) |
FirmwareInfo? |
查询最新固件,nil 表示无可用版本 |
upgradeFirmware(fileUrl: String) |
Void |
OTA 传输固件包到设备 |
// 1. 查询最新固件
let info = try await sdk.fetchLatestFirmware()
// 2. OTA 升级
if let info {
try await sdk.upgradeFirmware(fileUrl: info.fileUrl)
}
可观察状态
| 属性 | 类型 | 说明 |
|---|---|---|
btState |
ConnectionState |
idle / scanning / connecting / connected / disconnecting / disconnected |
discoveredDevices |
[DiscoveredDevice] |
扫描到的设备列表 |
connectedDevice |
DiscoveredDevice? |
当前连接设备 |
deviceInfo |
DeviceInfo? |
设备信息 |
version |
String |
固件版本 |
isActivated |
Bool |
是否已绑定 |
transferProgress |
Int |
传输进度 0-100 |
error |
String? |
最近错误 |
数据类型
// FirmwareInfo — fetchLatestFirmware 返回
public struct FirmwareInfo {
let version: String // 版本号
let fileUrl: String // 固件下载地址
let description: String? // 描述
let fileSize: String? // 文件大小(字节字符串)
let fileMd5: String? // MD5 校验
let identifier: String? // 设备标识
let status: String? // DRAFT / PUBLISHED
}
// DeviceInfo — getDeviceInfo 返回
public struct DeviceInfo {
let name: String // 设备名
let brand: String // 品牌
let size: String // 屏幕尺寸
let powerlevel: Int // 电量百分比
let allspace: Int // 总存储(字节)
let freespace: Int // 可用存储(字节)
}
// BindingResponse — bind 返回
public struct BindingResponse {
let success: Int // 1=成功
let sn: String // 设备序列号
let contents: [String] // 设备文件 key 列表
}
Info.plist
<key>NSBluetoothAlwaysUsageDescription</key>
<string>This app needs Bluetooth to communicate with your device</string>
技术规格
- iOS 16.0+ / Swift 5.9+ / 零依赖
- 公开 API @MainActor,BLE 操作专用串行队列
Description
Languages
Swift
99.4%
Ruby
0.6%