ios CoreBluetooth-соединение EventDidOccur не вызывается - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть периферийное устройство, которое поддерживает профиль A2DP и ​​ gatt over BR / EDR . В записи sdp для bluetooth classi c зарегистрированы различные службы gatt. Я разработал приложение Android для успешного взаимодействия с ним следующим образом:

//here scan the classic Bluetooth to get its address
BluetoothDevice device = bluetoothAdapter.getRemoteDevice(**CLASSIC_BLUETOOTH_ADDRESS**);
device.connectGatt(context, false, gattCallback, BluetoothDevice.TRANSPORT_BREDR);

Теперь мне нужно разработать приложение iOS, после многих поисков. Кажется, что GATT over BR / EDR делает поддерживается CoreBluetooth после iOS 13, но в отличие от android, он не может сканировать устройства classi c Bluetooth, но я нахожу здесь пример кода образец кода Apple , поэтому я пишу свой тестовый код следующим образом:


import CoreBluetooth
import UIKit
import os.log

struct BTConstants {
    static let uuidService = CBUUID.init(string: "66666666-8888-7777-5555-123456780000") //our gatt service uuid(modified)
}

class CentralViewController: UIViewController {
    private var cbManager: CBCentralManager!

    override func viewDidLoad() {
        super.viewDidLoad()
        cbManager = CBCentralManager(delegate: self, queue: nil)
    }
}

extension CentralViewController: CBCentralManagerDelegate {
    func centralManagerDidUpdateState(_ central: CBCentralManager) {
        switch central.state {
        case .resetting:
            os_log("Connection with the system service was momentarily lost. Update imminent")
        case .unsupported:
            os_log("Platform does not support the Bluetooth Low Energy Central/Client role")
        case .unauthorized:
            os_log("Something went wrong. Cleaning up cbManager")
        case .poweredOff:
            os_log("Bluetooth is currently powered off")
        case .poweredOn:
            os_log("Starting cbManager")
            let matchingOptions = [CBConnectionEventMatchingOption.serviceUUIDs: [BTConstants.uuidService]]
            cbManager.registerForConnectionEvents(options: matchingOptions)
        default:
            os_log("Cleaning up cbManager")
        }
    }

    func centralManager(_ central: CBCentralManager, connectionEventDidOccur event: CBConnectionEvent, for peripheral: CBPeripheral) {
        os_log("connectionEventDidOccur ")
        switch event {
        case .peerConnected:
            os_log("Peer disconnected!")
        case .peerDisconnected:
            os_log("Peer disconnected!")
        default:
            os_log("The default!")
        }
    }
}

Когда я подключаюсь к своему устройству из iOS Настройки Bluetooth, ничего не происходит, Обратный вызов не называется ,, так что я что-то пропускаю? Любая помощь будет оценена.

...