fix:sdk增加判断是否需要更新的方法
This commit is contained in:
@@ -171,6 +171,13 @@ sdk.transferProgress.collect { percent -> /* 0-100 */ }
|
|||||||
val firmware = sdk.fetchLatestFirmware(identifier, status)
|
val firmware = sdk.fetchLatestFirmware(identifier, status)
|
||||||
// firmware?.version, firmware?.fileUrl, firmware?.fileSize
|
// firmware?.version, firmware?.fileUrl, firmware?.fileSize
|
||||||
|
|
||||||
|
// 检查是否有新版本 (对比版本号末尾10位时间戳)
|
||||||
|
val needUpdate = sdk.hasNewerFirmware(
|
||||||
|
deviceVersion = sdk.version.value, // 当前设备版本
|
||||||
|
serverVersion = firmware?.version // 服务端最新版本
|
||||||
|
)
|
||||||
|
// 参数为空/null/格式不合法时返回 false
|
||||||
|
|
||||||
// 执行 OTA 升级
|
// 执行 OTA 升级
|
||||||
sdk.upgradeFirmware(firmware.fileUrl)
|
sdk.upgradeFirmware(firmware.fileUrl)
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -479,6 +479,16 @@ class DuooomiBleSDK(context: Context, val config: DuooomiBleConfig) {
|
|||||||
} ?: BleLog.w("No pending continuation for opId=$opId", "RPC")
|
} ?: 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
|
// MARK: - Helpers
|
||||||
|
|
||||||
private fun ensureConnected() {
|
private fun ensureConnected() {
|
||||||
|
|||||||
Reference in New Issue
Block a user