BLE设备应该在没有扫描的情况下连接

时间:2018-04-06 08:10:34

标签: ios swift bluetooth-lowenergy

BLE(蓝牙低功耗)设备无需扫描即可连接到我的iPhone(应用程序)。

我有通过扫描QRCode获得的BLE地址。

所以从那里我希望连接的特定设备(我通过地址的那个)没有调用(manager.scanForPeripherals(withServices:nil)) 因为它会调出所有设备。

现在,当我找到我的特定设备时,我能够扫描我的BLE设备的QRCode和扫描所有可用设备。 我在

中使用广告数据停止扫描并连接到它
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber)

有没有办法直接连接而不扫描,因为我已经拥有BLE设备的地址

先谢谢。任何参考资料都会有所帮助。

3 个答案:

答案 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)

这确实意味着该设备必须在范围内并且可以做广告,并且除非您进行扫描,否则实际上没有任何方法可以对其进行检查。 希望这会有所帮助。