[CoreBluetooth] API MISUSE: <CBPeripheral: 0x281310820, identifier = 75450BB1-97A7-5648-38FD-B27572F19EDD, name = ESP32 test, state = disconnected> can only accept commands while in the connected state
这就是CoreBluetooth给我的错误
peripheral.discoverServices([CBUUID(string: "4fafc201-1fb5-459e-8fcc-c5c9c331914b")])
有人知道发生了什么事吗?
以下是didDiscover代表:
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
var peripheralName: String!
if let name = advertisementData[CBAdvertisementDataLocalNameKey] as? String {
peripheralName = name
}
else {
peripheralName = "Unknown"
}
if(advertisementData[CBAdvertisementDataServiceUUIDsKey] != nil) {
//print(advertisementData)
let Ids: [CBUUID] = advertisementData[CBAdvertisementDataServiceUUIDsKey] as! [CBUUID]
if(Ids.count == 1) {
print(Ids[0])
let newPeripheral = Peripheral(id: peripherals.count, name: peripheralName, rssi: RSSI.intValue)
//print(newPeripheral)
/*
if let services = peripheral.services {
for service in services {
print("servizio")
//peripheral.discoverCharacteristics([CBUUID(string: "4fafc201-1fb5-459e-8fcc-c5c9c331914b")], for: service)
}
}*/
if(accepted_services.contains(Ids[0].uuidString)) {
print(newPeripheral)
peripherals.append(newPeripheral)
peripheral.delegate = self
peripheral.discoverServices([CBUUID(string: "4fafc201-1fb5-459e-8fcc-c5c9c331914b")])
//peripheral.discoverCharacteristics([CBUUID(string: "beb5483e-36e1-4688-b7f5-ea07361b26a8")], for: <#CBService#>)
}
}
}
}
编辑:,我现在尝试先连接到外围设备,但是还有另一个错误:
[CoreBluetooth] API MISUSE: Cancelling connection for unused peripheral <CBPeripheral: 0x2829e01e0, identifier = 75450BB1-97A7-5648-38FD-B27572F19EDD, name = ESP32 test, state = connecting>, Did you forget to keep a reference to it?
这是实际代码:
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String:Any], rssi RSSI: NSNumber) {
print("scoperto peripheral")
myCentral.connect(peripheral, options: nil)
}
什么意思?
发布于 2020-12-19 17:40:09
您负责在某个地方保存对CBPeripheral的引用。这就是信息告诉你的(“你忘了保留它的引用了吗?”)您正在创建一个Peripheral
(我假设它是一个自定义结构或类),但它只具有名称,而不是CBPeripheral。这意味着在didDiscover
的末尾,CBPeripheral没有被任何东西引用,而是发布了。
https://stackoverflow.com/questions/65370708
复制相似问题