BLE(蓝牙低功耗)设备无需扫描即可连接到我的iPhone(应用程序)。
我有通过扫描QRCode获得的BLE地址。
所以从那里我希望连接的特定设备(我通过地址的那个)没有调用(manager.scanForPeripherals(withServices:nil)) 因为它会调出所有设备。
现在,当我找到我的特定设备时,我能够扫描我的BLE设备的QRCode和扫描所有可用设备。 我在
中使用广告数据停止扫描并连接到它func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber)
有没有办法直接连接而不扫描,因为我已经拥有BLE设备的地址
先谢谢。任何参考资料都会有所帮助。
答案 0 :(得分:4)
如果不执行扫描,则无法连接到外围设备。扫描外围设备管理器时会为每个外围设备创建一个唯一的ID,然后用于连接。对于不同iPhone上的相同外围设备,此唯一ID将有所不同。所以你的想法不起作用,你将不得不执行连接扫描。
答案 1 :(得分:0)
我不知道Iphone,但在Windows上它是。只需连接已知地址即可。它有一些缺点: 设备可能无法触及或已连接,因此您必须抓住这些情况。
答案 2 :(得分:0)
如果您希望重新连接到先前发现的设备,则可以存储设备UUID并使用:
let retrievedPeripheral = centralManager.retrievePeripherals(withIdentifiers: [deviceUUID])
,它将检索与提供的UUID匹配的CBPeripheral对象。您可以使用以下命令执行连接:
centralManager.connect(retrievedPeripheral[0], options: nil)
这确实意味着该设备必须在范围内并且可以做广告,并且除非您进行扫描,否则实际上没有任何方法可以对其进行检查。 希望这会有所帮助。