我正在尝试使用 CoreBluetooth
,但偶然发现了一些我不明白的东西。
在扫描附近的蓝牙设备时,当我记录结果时,我不会退出理解输出,例如 - 找到的一些设备:
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>
为什么有些设备有名称,有些设备的名称为 null?
另一件事,我有一部带蓝牙的 Android 手机,但我在结果日志中没有看到它。 我可以看到 Android 设备的唯一方法是,如果我手动转到 iPhone 的蓝牙设置,在扫描结果* 中找到 Android 设备并手动连接到它。手动连接后,我看到以下日志:
discovered peripheral = <CBPeripheral: 0x281b790e0, identifier = 7E34D617-731F-616E-8C89-5729870CDD5E, name = Edward's Galaxy S9+, state = disconnected>
现在,手动连接后为什么连接状态显示 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)
}
}