У меня есть периферийное устройство, которое поддерживает профиль 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, ничего не происходит, Обратный вызов не называется ,, так что я что-то пропускаю? Любая помощь будет оценена.