iOS可以通过指定CBPeripheral *)外设重新连接蓝牙LE外设而不是检索外设吗?

时间:2013-09-06 16:45:11

标签: ios core-bluetooth

当我获得委托时didConnectPeripheral:(CBPeripheral *)peripheral 我可以只将外设存储在一个数组中,然后用它来重新连接,而不是使用retrievePeripherals及其后续的didRetrievePeripherals吗? 如果它可行且没有风险,似乎会更容易。

以后可以重复使用(CBPeripheral *)peripheral多少?断开与外围设备后它仍然有效吗?

工作流:

  1. scanForPeripheralsWithServices() - 扫描外围设备
  2. didDiscoverPeripheral:(CBPeripheral *)peripheral - 检测到它时  connectPeripheral:peripheral
  3. didConnectPeripheral:(CBPeripheral *)peripheral stopScan并存储(CBPeripheral *)peripheral以供日后使用。
  4. ...读或写特征......
  5. cancelPeripheralConnection
  6. didDisconnectPeripheral
  7. 稍后,重新连接...

    1. connectPeripheral:peripheral - 来自带外设的数组
    2. didConnectPeripheral:(CBPeripheral *)peripheral ...

1 个答案:

答案 0 :(得分:5)

是的,它会起作用(但这是可怕的做法)。 retrievePeripherals:方法是专门创建的,因此您可以在后续启动应用程序之间重新连接到外围设备。您可以使用您的方法,但是一旦应用程序关闭,您将永远无法再次连接到外围设备(不将其置于广告模式并从头开始)。您可以在启动之间存储uuid,但不能存储CBPeripheral对象。所以那里有很大的缺点。

总而言之:它会起作用,但它并没有真正获得任何东西。它并不比调用retrievePeripherals:然后连接它们快。您建议的方法仅限制CoreBluetooth中的连接能力。但是一个有趣的问题。