ios CoreBluetooth connectionEventDidOccur 未被调用

Tig*_*ang 7 ios core-bluetooth gatt swift bluetooth-gatt

我有一个外围设备,支持 A2DP 配置文件和BR/EDR 上的 gatt。各种 gatt 服务都在蓝牙经典的 sdp 记录中注册。\n我开发了一个 Android 应用程序来与其成功通信,如下所示:

\n\n
//here scan the classic Bluetooth to get its address\nBluetoothDevice device = bluetoothAdapter.getRemoteDevice(**CLASSIC_BLUETOOTH_ADDRESS**);\ndevice.connectGatt(context, false, gattCallback, BluetoothDevice.TRANSPORT_BREDR);\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在我需要开发一个iOS应用程序,经过大量搜索,似乎iOS 13之后CoreBluetooth确实支持GATT over BR/EDR,但与android不同的是,它无法扫描经典蓝牙设备,但我确实找到了示例代码\ n苹果示例代码在这里,所以我编写我的测试代码如下:

\n\n
\nimport CoreBluetooth\nimport UIKit\nimport os.log\n\nstruct BTConstants {\n    static let uuidService = CBUUID.init(string: "66666666-8888-7777-5555-123456780000") //our gatt service uuid(modified)\n}\n\nclass CentralViewController: UIViewController {\n    private var cbManager: CBCentralManager!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        cbManager = CBCentralManager(delegate: self, queue: nil)\n    }\n}\n\nextension CentralViewController: CBCentralManagerDelegate {\n    func centralManagerDidUpdateState(_ central: CBCentralManager) {\n        switch central.state {\n        case .resetting:\n            os_log("Connection with the system service was momentarily lost. Update imminent")\n        case .unsupported:\n            os_log("Platform does not support the Bluetooth Low Energy Central/Client role")\n        case .unauthorized:\n            os_log("Something went wrong. Cleaning up cbManager")\n        case .poweredOff:\n            os_log("Bluetooth is currently powered off")\n        case .poweredOn:\n            os_log("Starting cbManager")\n            let matchingOptions = [CBConnectionEventMatchingOption.serviceUUIDs: [BTConstants.uuidService]]\n            cbManager.registerForConnectionEvents(options: matchingOptions)\n        default:\n            os_log("Cleaning up cbManager")\n        }\n    }\n\n    func centralManager(_ central: CBCentralManager, connectionEventDidOccur event: CBConnectionEvent, for peripheral: CBPeripheral) {\n        os_log("connectionEventDidOccur ")\n        switch event {\n        case .peerConnected:\n            os_log("Peer disconnected!")\n        case .peerDisconnected:\n            os_log("Peer disconnected!")\n        default:\n            os_log("The default!")\n        }\n    }\n}\n\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我从 iOS 蓝牙设置连接到我的设备时,没有任何反应,\n未调用回调\xef\xbc\x8c,所以我是否错过了什么?任何帮助将不胜感激。

\n