При работе с CoreBluetooth
я нахожу случаи, когда функция CBCentralManagerDelegate
centralManager (_: didConnect:) не вызывается, когда это происходит, я также обнаружил, что centralManager (_: didDiscover: advertisingData: rssi:) функция может вызываться несколько раз, при этом Периферийное состояние будет .disconnected в первый раз, а затем .connecting после этого .
Это то, что должно происходить, или это показывает, что в моем коде есть возможные ошибки?
Что мне делать, если Периферийное состояние .connecting ? Выйти из функции, ничего не делая?
Вот некоторые соответствующие коды:
func centralManager(_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String : Any],
rssi RSSI: NSNumber) {
print(#function)
if peripheral.state != .disconnected {
// This is not the case the first time this function is called.
// It is not clear what to do here.
print("peripheral not disconnected")
return
}
peripheral.delegate = self
if cbPerifList == nil {cbPerifList = [CBPeripheral]()}
cbPerifList!.index(where:{$0.identifier==peripheral.identifier}) == nil {
cbPerifList.append(peripheral)
}
central.connect(peripheral, options: nil)
}
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
print(#function)
peripheral.discoverServices(listeningServices)
}