docs: document setPlayMode API with bind-first precondition

This commit is contained in:
km2023
2026-05-06 10:50:54 +08:00
parent c1090e8057
commit 1aeb0f0845

View File

@@ -107,6 +107,28 @@ sdk.unbind(userId: "user-id") { result in /* ... */ }
sdk.deleteFile(key: "file-key") { result in /* ... */ }
```
#### 播放模式Play Mode
> ⚠️ **前置条件 — 必须先绑定。** `setPlayMode` 复用 `BIND_DEVICE` (0x0F) 命令通道,固件设计上要求设备先和该 `userId` 完成 `bind`(即 SDK `isActivated == true`才能切播放模式。SDK 在客户端做了守卫:未绑定时直接 fail不会发命令。请在 UI 上禁用切换按钮,直到 `didChangeActivation(true)` 回调到达。
```swift
// 0 = / 1 =
sdk.setPlayMode(.loop, userId: "user-id") { result in
switch result {
case .success:
// SDK deviceInfo
// didUpdateDeviceInfo info.loop
break
case .failure(let error):
print("setPlayMode failed: \(error)")
}
}
```
**注意事项:**
- `bind` / `unbind` / `setPlayMode` 共享 `0x0F` / `0x12` 响应通道,**不要并发调用**
- 旧固件可能不支持 `loop` 字段 —— 此时 `DeviceInfo.loop``nil`,调用 `setPlayMode` 设备可能回 `success=0`
### 文件传输
```swift
@@ -174,6 +196,12 @@ public struct FirmwareInfo {
let status: String? // DRAFT / PUBLISHED
}
// PlayMode
public enum PlayMode: Int {
case single = 0 //
case loop = 1 //
}
// DeviceInfo getDeviceInfo
public struct DeviceInfo {
let name: String //
@@ -182,6 +210,7 @@ public struct DeviceInfo {
let powerlevel: Int //
let allspace: UInt64 //
let freespace: UInt64 //
let loop: PlayMode? // nil
}
// BindingResponse bind