CBCentralManager 在 Mac 上无法发现设备?

问题描述 投票:0回答:1

我使用Core Bluetooth Framework来发现macos APP的蓝牙设备,代码如下,

discoveredPeripherals
回调中的变量
print
centralManager
语句,在我的Macbook蓝牙设置上没有显示连接的设备,例如“Devialet Gemini”图像上的 II'。
centralManager
回调正常,
print
打印了除“Devialet Gemini II”之外的许多其他设备。我确信它是 BLE 设备。

!!!当我取消配对并断开“Devialet Gemini II”时,也无法发现设备,但 macos 系统蓝牙设置可以。

系统面板--(连接状态图):

enter image description here

!!!当我取消配对并断开“Devialet Gemini II”的连接时,也无法发现设备,但 macos 系统蓝牙设置可以。

系统面板--(未配对和断开连接状态img:)

enter image description here

打印日志:连接或断开或未配对,始终无法发现“Devialet Gemini II”设备。

enter image description here

class BluetoothManager: NSObject, CBCentralManagerDelegate, ObservableObject {
    @Published var isBluetoothEnabled = false
    @Published var discoveredPeripherals = [CBPeripheral]()
    @Published var connectedPeripherals = [CBPeripheral]()
    @Published var pairedPeripherals = [CBPeripheral]()

    private var centralManager: CBCentralManager!

    override init() {
        super.init()
        centralManager = CBCentralManager(delegate: self, queue: nil)
    }
    
    func connect(_ central: CBCentralManager, _ peripheral: CBPeripheral) {
        central.connect(peripheral)
    }

    func centralManagerDidUpdateState(_ central: CBCentralManager) {
        if central.state == .poweredOn {
            isBluetoothEnabled = true
            centralManager.scanForPeripherals(withServices: nil, options: nil)  
        } else {
            isBluetoothEnabled = false
        }
    }

    func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
        
        // there is no connected devices(named "Devialet Gemini II") as image show !!!!!!!!!
        print("discover:  \(peripheral.name ?? "Unknown")-\(peripheral.state)")

        if !discoveredPeripherals.contains(peripheral) {
            discoveredPeripherals.append(peripheral)
        }
        if !connectedPeripherals.contains(peripheral) && peripheral.state == .connected {
            connectedPeripherals.append(peripheral)
        }
    }
}
swift macos core-bluetooth cbcentralmanager
1个回答
0
投票

问题解决了,设备的名称可能是在连接后分配的,所以我不应该查找名称。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.