diff --git a/README.md b/README.md index 322912b..90a2f45 100644 --- a/README.md +++ b/README.md @@ -171,6 +171,13 @@ sdk.transferProgress.collect { percent -> /* 0-100 */ } val firmware = sdk.fetchLatestFirmware(identifier, status) // firmware?.version, firmware?.fileUrl, firmware?.fileSize +// 检查是否有新版本 (对比版本号末尾10位时间戳) +val needUpdate = sdk.hasNewerFirmware( + deviceVersion = sdk.version.value, // 当前设备版本 + serverVersion = firmware?.version // 服务端最新版本 +) +// 参数为空/null/格式不合法时返回 false + // 执行 OTA 升级 sdk.upgradeFirmware(firmware.fileUrl) ``` diff --git a/sdk/src/main/kotlin/com/duooomi/ble/DuooomiBleSDK.kt b/sdk/src/main/kotlin/com/duooomi/ble/DuooomiBleSDK.kt index 9e05919..e7a9c51 100644 --- a/sdk/src/main/kotlin/com/duooomi/ble/DuooomiBleSDK.kt +++ b/sdk/src/main/kotlin/com/duooomi/ble/DuooomiBleSDK.kt @@ -479,6 +479,16 @@ class DuooomiBleSDK(context: Context, val config: DuooomiBleConfig) { } ?: BleLog.w("No pending continuation for opId=$opId", "RPC") } + // MARK: - Version Check + + fun hasNewerFirmware(deviceVersion: String?, serverVersion: String?): Boolean { + if (deviceVersion.isNullOrEmpty() || serverVersion.isNullOrEmpty()) return false + if (deviceVersion.length < 10 || serverVersion.length < 10) return false + val deviceTs = deviceVersion.takeLast(10).toLongOrNull() ?: return false + val serverTs = serverVersion.takeLast(10).toLongOrNull() ?: return false + return serverTs > deviceTs + } + // MARK: - Helpers private fun ensureConnected() {