Skip to content

Commit 21e744b

Browse files
committed
chore: optimize ios checkState
1 parent 50bab51 commit 21e744b

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

ios/BleUtils.swift

+14-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import CoreBluetooth
55
class BleUtilsModule: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate {
66
private var manager: CBCentralManager?
77
private let serialQueue = DispatchQueue(label: "BleUtilsModule.serialQueue")
8+
private var stateChangedCallbacks: [RCTResponseSenderBlock] = []
89

910
@objc
1011
static func requiresMainQueueSetup() -> Bool {
@@ -17,13 +18,23 @@ class BleUtilsModule: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate {
1718
}
1819

1920
func centralManagerDidUpdateState(_ central: CBCentralManager) {
20-
21+
if !stateChangedCallbacks.isEmpty {
22+
let stateName = Helper.centralManagerStateToString(central.state)
23+
for callback in stateChangedCallbacks {
24+
callback([stateName])
25+
}
26+
stateChangedCallbacks.removeAll()
27+
}
2128
}
2229

2330
@objc public func checkState(_ callback: @escaping RCTResponseSenderBlock) {
2431
if let manager = manager {
25-
let stateName = Helper.centralManagerStateToString(manager.state)
26-
callback([stateName])
32+
if manager.state == .unknown {
33+
stateChangedCallbacks.append(callback)
34+
} else {
35+
let stateName = Helper.centralManagerStateToString(manager.state)
36+
callback([stateName])
37+
}
2738
}
2839
}
2940

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@onekeyfe/react-native-ble-utils",
3-
"version": "0.1.3",
3+
"version": "0.1.4",
44
"description": "ble uilts",
55
"source": "./src/index.tsx",
66
"main": "./dist/commonjs/index.js",

0 commit comments

Comments
 (0)