Commit 5507c7249150784f3c96a561af43b8469898ebf2
1 parent
519f718b
feat:send interval
Showing
4 changed files
with
47 additions
and
0 deletions
HDFwear.xcodeproj/project.pbxproj
... | ... | @@ -281,6 +281,7 @@ |
281 | 281 | 6CFEEBC22773354500621863 /* HRReferenceVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CFEEBC12773354500621863 /* HRReferenceVC.swift */; }; |
282 | 282 | 6CFEEBC42773355700621863 /* SleepReferenceVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CFEEBC32773355700621863 /* SleepReferenceVC.swift */; }; |
283 | 283 | 844959782B48EF900029E2E0 /* BluetoothManager+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 844959772B48EF900029E2E0 /* BluetoothManager+Deprecated.swift */; }; |
284 | + 8473FB622B4BF1A200409148 /* TaskManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8473FB612B4BF1A200409148 /* TaskManager.swift */; }; | |
284 | 285 | 847482762B03793C0004F0C2 /* NewWeatherModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847482752B03793C0004F0C2 /* NewWeatherModel.swift */; }; |
285 | 286 | 847672B82B074E43007DC2DE /* NewBeiDouContactModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847672B72B074E43007DC2DE /* NewBeiDouContactModel.swift */; }; |
286 | 287 | B212F1FD2A14CE0400781D59 /* LaunchSetting.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B212F1FF2A14CE0400781D59 /* LaunchSetting.storyboard */; }; |
... | ... | @@ -656,6 +657,7 @@ |
656 | 657 | 6CFEEBC12773354500621863 /* HRReferenceVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HRReferenceVC.swift; sourceTree = "<group>"; }; |
657 | 658 | 6CFEEBC32773355700621863 /* SleepReferenceVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SleepReferenceVC.swift; sourceTree = "<group>"; }; |
658 | 659 | 844959772B48EF900029E2E0 /* BluetoothManager+Deprecated.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BluetoothManager+Deprecated.swift"; sourceTree = "<group>"; }; |
660 | + 8473FB612B4BF1A200409148 /* TaskManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TaskManager.swift; sourceTree = "<group>"; }; | |
659 | 661 | 847482752B03793C0004F0C2 /* NewWeatherModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewWeatherModel.swift; sourceTree = "<group>"; }; |
660 | 662 | 847672B72B074E43007DC2DE /* NewBeiDouContactModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewBeiDouContactModel.swift; sourceTree = "<group>"; }; |
661 | 663 | 847D1C4A2B009FAC0097A96E /* 20231111ReadMe.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = 20231111ReadMe.md; sourceTree = "<group>"; }; |
... | ... | @@ -1113,6 +1115,7 @@ |
1113 | 1115 | 844959772B48EF900029E2E0 /* BluetoothManager+Deprecated.swift */, |
1114 | 1116 | 6C1F987E279BF0AA00C0C3BA /* BluetoothManager+Set.swift */, |
1115 | 1117 | B279A3792A4AC2F800A7C7B6 /* BluetoothManager+Function.swift */, |
1118 | + 8473FB612B4BF1A200409148 /* TaskManager.swift */, | |
1116 | 1119 | 6C411EE4275DFF37009B2E02 /* Bluetooth+Types.swift */, |
1117 | 1120 | 6C6051B92760843F00286B37 /* BleMessage.swift */, |
1118 | 1121 | B279A37B2A4AC5B000A7C7B6 /* BleMessage+Function.swift */, |
... | ... | @@ -1712,6 +1715,7 @@ |
1712 | 1715 | 6C5A979127CCC00D00221361 /* PressReferenceVC.swift in Sources */, |
1713 | 1716 | 6CFE53FA277B0D5D00520B00 /* StartMotionVC.swift in Sources */, |
1714 | 1717 | 6C5B545427755E9D007F7901 /* WristViewController.swift in Sources */, |
1718 | + 8473FB622B4BF1A200409148 /* TaskManager.swift in Sources */, | |
1715 | 1719 | 6C6F40892743835F00F9473C /* WomenHealthCell.swift in Sources */, |
1716 | 1720 | 6C187CD62786E9A500150D1B /* StepCircleView.swift in Sources */, |
1717 | 1721 | 6C411EDF275DE737009B2E02 /* BluetoothManager.swift in Sources */, | ... | ... |
HDFwear/Tools/BluetoothManager+Function.swift
... | ... | @@ -334,6 +334,13 @@ extension BluetoothManager { |
334 | 334 | } |
335 | 335 | //MARK: - 发送数据 |
336 | 336 | func sendData(_ data: Data) { |
337 | + taskManager.executeTaskIfNeeded { [weak self] in | |
338 | + print("Task executed at \(Date())") | |
339 | + self?.coreSendData(data) | |
340 | + } | |
341 | + } | |
342 | + | |
343 | + func coreSendData(_ data: Data) { | |
337 | 344 | if peripheral == nil { |
338 | 345 | print("peripheral == nil") |
339 | 346 | return | ... | ... |
HDFwear/Tools/BluetoothManager.swift
... | ... | @@ -142,6 +142,9 @@ class BluetoothManager: NSObject { |
142 | 142 | var isNextSync: Bool = false //是否有下一个同步包 |
143 | 143 | // private var |
144 | 144 | |
145 | + // 任务执行管理 | |
146 | + let taskManager = TaskManager() | |
147 | + | |
145 | 148 | override init() { |
146 | 149 | super.init() |
147 | 150 | // manger.registerClientProfile(BLEConfig.MTKServerUUID, clientProfileDelegate: self) | ... | ... |
HDFwear/Tools/TaskManager.swift
0 → 100644
1 | +// | |
2 | +// TaskManager.swift | |
3 | +// HDFwear | |
4 | +// | |
5 | +// Created by admin on 2024/1/8. | |
6 | +// | |
7 | + | |
8 | +import Foundation | |
9 | + | |
10 | +class TaskManager { | |
11 | + private var lastExecutionTime: DispatchTime = .now() | |
12 | + private let queue = DispatchQueue(label: "com.watch.taskQueue", attributes: .concurrent) | |
13 | + | |
14 | + func executeTaskIfNeeded(taskBlock: @escaping () -> Void) { | |
15 | + let now = DispatchTime.now() | |
16 | + let deadline = lastExecutionTime + .milliseconds(300) | |
17 | + | |
18 | + let delay: DispatchTimeInterval | |
19 | + if now >= deadline { | |
20 | + // If enough time has passed, execute the task immediately | |
21 | + delay = .seconds(0) | |
22 | + } else { | |
23 | + // If not, calculate the delay until the next execution | |
24 | + delay = .nanoseconds(Int(deadline.uptimeNanoseconds - now.uptimeNanoseconds)) | |
25 | + } | |
26 | + | |
27 | + // Schedule the task to execute after the required delay | |
28 | + lastExecutionTime = .now() + delay | |
29 | + queue.asyncAfter(deadline: lastExecutionTime) { | |
30 | + taskBlock() | |
31 | + } | |
32 | + } | |
33 | +} | ... | ... |