perf(watchos-live): FC poussée en temps réel à chaque échantillon (throttle 2s -> envoi immédiat)
Le throttle fixe de 2s ajoutait jusqu'à 2s de latence sur /live vs l'app Exercice native d'Apple (instantanée). Désormais chaque nouvel échantillon FC est envoyé immédiatement ; throttle léger 0.5s conservé uniquement pour calories/distance (anti-saturation BLE). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -23,7 +23,10 @@ final class WorkoutManager: NSObject, ObservableObject {
|
|||||||
private var builder: HKLiveWorkoutBuilder?
|
private var builder: HKLiveWorkoutBuilder?
|
||||||
|
|
||||||
private var lastSentAt = Date.distantPast
|
private var lastSentAt = Date.distantPast
|
||||||
private let sendInterval: TimeInterval = 2
|
// Throttle léger anti-saturation BLE pour les metrics à haute fréquence
|
||||||
|
// (calories/distance). La FC, elle, est poussée immédiatement à chaque
|
||||||
|
// nouvel échantillon — comme l'app Exercice native d'Apple.
|
||||||
|
private let minSendInterval: TimeInterval = 0.5
|
||||||
private var simTask: Task<Void, Never>?
|
private var simTask: Task<Void, Never>?
|
||||||
|
|
||||||
private override init() { super.init() }
|
private override init() { super.init() }
|
||||||
@@ -137,7 +140,10 @@ final class WorkoutManager: NSObject, ObservableObject {
|
|||||||
elapsedSec = elapsed
|
elapsedSec = elapsed
|
||||||
|
|
||||||
let now = Date()
|
let now = Date()
|
||||||
guard now.timeIntervalSince(lastSentAt) >= sendInterval else { return }
|
// Nouvelle FC -> envoi immédiat (temps réel, comme Apple). Sinon (mise à
|
||||||
|
// jour calories/distance seule), on applique le throttle anti-saturation.
|
||||||
|
let heartRateUpdated = hr != nil
|
||||||
|
guard heartRateUpdated || now.timeIntervalSince(lastSentAt) >= minSendInterval else { return }
|
||||||
lastSentAt = now
|
lastSentAt = now
|
||||||
ConnectivityManager.shared.sendSample([
|
ConnectivityManager.shared.sendSample([
|
||||||
"heartRate": heartRate,
|
"heartRate": heartRate,
|
||||||
|
|||||||
Reference in New Issue
Block a user