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

Dou*_*ull 5 ios core-bluetooth

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

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

工作流程:

  1. scanForPeripheralsWithServices() - 扫描外围设备
  2. didDiscoverPeripheral:(CBPeripheral *)peripheral - 当它被检测到时 connectPeripheral:peripheral
  3. didConnectPeripheral:(CBPeripheral *)peripheralstopScan并存储以(CBPeripheral *)peripheral供日后使用.
  4. ...读或写特征......
  5. cancelPeripheralConnection
  6. didDisconnectPeripheral

稍后,重新连接......

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

Tom*_*voy 5

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

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