From ed7de42e61edfdd2b1afd9bc6fec7d8676ddc0d3 Mon Sep 17 00:00:00 2001 From: km2023 Date: Wed, 20 May 2026 16:02:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(sdk):=20transferMedia=20=E5=85=A5=E5=8F=A3?= =?UTF-8?q?=E7=AB=8B=E5=8D=B3=E6=8A=8A=20transferProgress=20=E5=BD=92?= =?UTF-8?q?=E9=9B=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 旧实现里 transferProgress 只在 transferFile() 内部才置 0,但 transferMedia 要先走 validateMediaFormat → aniConverter.convert → getRemoteFileSize → prepareTransfer 这条数秒级异步链,期间字段还停 留在上次结束的 100。集成方 UI 一接上观察就看到旧值 100,体感像「上 次进度被带过来」。 修法:transferMedia 在 connectedDevice 守卫通过后立即 transferProgress = 0, delegate 立即收到 didUpdateProgress(0);后续 transferFile() 内部的 = 0 因 didSet 的 oldValue 守卫被自然跳过,不会重复广播。 Co-Authored-By: Claude Opus 4.7 (1M context) --- Sources/DuooomiBleSDK/DuooomiBleSDK+Transfer.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Sources/DuooomiBleSDK/DuooomiBleSDK+Transfer.swift b/Sources/DuooomiBleSDK/DuooomiBleSDK+Transfer.swift index 041fceb..ec4d26a 100644 --- a/Sources/DuooomiBleSDK/DuooomiBleSDK+Transfer.swift +++ b/Sources/DuooomiBleSDK/DuooomiBleSDK+Transfer.swift @@ -73,6 +73,7 @@ extension DuooomiBleSDK { completion(.failure(DuooomiBleError.notConnected)) return } + transferProgress = 0 let url = fileUrl.trimmingCharacters(in: .whitespacesAndNewlines) guard !url.isEmpty else { completion(.failure(DuooomiBleError.transferFailed("Empty file URL")))