问题描述
我正在尝试使用 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,state = disconnected>
discovered peripheral = <CBPeripheral: 0x281b78140,identifier = A2DC3485-F341-4AAB-6B09-8816FFACA15A,state = disconnected>
discovered peripheral = <CBPeripheral: 0x281b7c280,identifier = 89069574-F6F9-0637-1723-FEB36C3EE2B8,state = disconnected>
discovered peripheral = <CBPeripheral: 0x281b78280,identifier = 792BCEC8-471F-2327-6AD1-33EC57F2A758,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,state = disconnected>
另一件事,我有一部带蓝牙的 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)
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)