Ios 了解蓝牙扫描和连接流程
我正在试验Ios 了解蓝牙扫描和连接流程,ios,core-bluetooth,ios-bluetooth,cbcentralmanager,Ios,Core Bluetooth,Ios Bluetooth,Cbcentralmanager,我正在试验corebooth,我偶然发现了一些我不懂的东西。 在扫描附近的蓝牙设备时,当我记录结果时,我无法理解输出,例如,找到的一些设备: discovered peripheral = <CBPeripheral: 0x281b7c140, identifier = FC3098A3-426F-F1CF-C053-1D62E3EDE473, name = (null), state = disconnected> discovered peripheral = <CBP
corebooth
,我偶然发现了一些我不懂的东西。
在扫描附近的蓝牙设备时,当我记录结果时,我无法理解输出,例如,找到的一些设备:
discovered peripheral = <CBPeripheral: 0x281b7c140, identifier = FC3098A3-426F-F1CF-C053-1D62E3EDE473, name = (null), state = disconnected>
discovered peripheral = <CBPeripheral: 0x281b78000, identifier = 3313CAC4-3D8F-C225-4ABB-73390CCA1DC3, name = SL-1000S_BLE(ATT), state = disconnected>
discovered peripheral = <CBPeripheral: 0x281b640a0, identifier = D509D6C8-F5C4-E2E5-9387-B6294BCA5396, name = (null), state = disconnected>
discovered peripheral = <CBPeripheral: 0x281b78140, identifier = A2DC3485-F341-4AAB-6B09-8816FFACA15A, name = (null), state = disconnected>
discovered peripheral = <CBPeripheral: 0x281b7c280, identifier = 89069574-F6F9-0637-1723-FEB36C3EE2B8, name = (null), state = disconnected>
discovered peripheral = <CBPeripheral: 0x281b78280, identifier = 792BCEC8-471F-2327-6AD1-33EC57F2A758, name = (null), state = disconnected>
discovered peripheral = <CBPeripheral: 0x281b783c0, identifier = B7A4C076-D761-5646-0E66-DA832A9061BB, name = Amazfit Band 5, state = disconnected>
discovered peripheral = <CBPeripheral: 0x281b7c3c0, identifier = 759BD68B-0E48-F0D6-1C08-43F4D2DA528A, name = (null), state = disconnected>
设备的AVDVertising数据(例如,一个设备发出的声音:“我在这里,我的名字是ZzZ,我透露我有一些UUID AaA的服务…)可能相当长,并且是逐件发送的。因为您刚刚收到“基本件”“没有名字,你以后会得到名字。在您的情况下,我也会使用
CBCentralManagerScanOptionAllowDuplicatesKey
来true
。如果我记得的话,状态在你的应用程序中。也就是说,如果你的应用程序本身没有连接,它就会断开连接。你不知道是否有另一个应用程序。@Larme,你说的是什么意思?你以后会得到这个名称的?只有在通过设置手动连接后,我才能获取该名称。将true设置为允许的duplicateKey,然后进行扫描。在didDiscover中,打印发现的外围设备,即使它存在于外围设备阵列中。同时打印广告数据
。设备应该出现多次,并且信息比第一次多。@Larme,我尝试了你的建议,但在日志中看到了相同的结果,没有任何变化。每次更新didDiscover
方法时,我都会记录peripheral
数据和advertisementData
,但我没有得到新信息。
discovered peripheral = <CBPeripheral: 0x281b790e0, identifier = 7E34D617-731F-616E-8C89-5729870CDD5E, name = Edward's Galaxy S9+, state = disconnected>
override func viewDidLoad() {
super.viewDidLoad()
centralManager = CBCentralManager(delegate: self, queue: nil)
}
func centralManagerDidUpdateState(_ central: CBCentralManager) {
switch central.state {
case .poweredOn:
print("poweredOn")
self.centralManager?.scanForPeripherals(withServices: nil, options: [CBCentralManagerScanOptionAllowDuplicatesKey:false])
break
@unknown default:
print("default")
break
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
if(!peripheralsArray.contains(where: { $0.identifier == peripheral.identifier})) {
print("discovered peripheral = ", peripheral)
peripheralsArray.append(peripheral)
}
}