From 21e744b67aa8b9394b1916bebcba7df051b9e468 Mon Sep 17 00:00:00 2001 From: ByteZhang Date: Fri, 25 Apr 2025 15:43:13 +0800 Subject: [PATCH] chore: optimize ios checkState --- ios/BleUtils.swift | 17 ++++++++++++++--- package.json | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/ios/BleUtils.swift b/ios/BleUtils.swift index fa34785..1dd806a 100644 --- a/ios/BleUtils.swift +++ b/ios/BleUtils.swift @@ -5,6 +5,7 @@ import CoreBluetooth class BleUtilsModule: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate { private var manager: CBCentralManager? private let serialQueue = DispatchQueue(label: "BleUtilsModule.serialQueue") + private var stateChangedCallbacks: [RCTResponseSenderBlock] = [] @objc static func requiresMainQueueSetup() -> Bool { @@ -17,13 +18,23 @@ class BleUtilsModule: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate { } func centralManagerDidUpdateState(_ central: CBCentralManager) { - + if !stateChangedCallbacks.isEmpty { + let stateName = Helper.centralManagerStateToString(central.state) + for callback in stateChangedCallbacks { + callback([stateName]) + } + stateChangedCallbacks.removeAll() + } } @objc public func checkState(_ callback: @escaping RCTResponseSenderBlock) { if let manager = manager { - let stateName = Helper.centralManagerStateToString(manager.state) - callback([stateName]) + if manager.state == .unknown { + stateChangedCallbacks.append(callback) + } else { + let stateName = Helper.centralManagerStateToString(manager.state) + callback([stateName]) + } } } diff --git a/package.json b/package.json index c5f582b..16d21b9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@onekeyfe/react-native-ble-utils", - "version": "0.1.3", + "version": "0.1.4", "description": "ble uilts", "source": "./src/index.tsx", "main": "./dist/commonjs/index.js",