当我获得委托时didConnectPeripheral:(CBPeripheral *)peripheral
我可以只将外设存储在一个数组中,然后用它来重新连接,而不是使用retrievePeripherals及其后续的didRetrievePeripherals
吗?
如果它可行且没有风险,似乎会更容易。
以后可以重复使用(CBPeripheral *)peripheral
多少?断开与外围设备后它仍然有效吗?
工作流:
scanForPeripheralsWithServices()
- 扫描外围设备didDiscoverPeripheral:(CBPeripheral *)peripheral
- 检测到它时
connectPeripheral:peripheral
didConnectPeripheral:(CBPeripheral *)peripheral
stopScan并存储(CBPeripheral *)peripheral
以供日后使用。cancelPeripheralConnection
didDisconnectPeripheral
稍后,重新连接...
connectPeripheral:peripheral
- 来自带外设的数组didConnectPeripheral:(CBPeripheral *)peripheral
... 答案 0 :(得分:5)
是的,它会起作用(但这是可怕的做法)。 retrievePeripherals:
方法是专门创建的,因此您可以在后续启动应用程序之间重新连接到外围设备。您可以使用您的方法,但是一旦应用程序关闭,您将永远无法再次连接到外围设备(不将其置于广告模式并从头开始)。您可以在启动之间存储uuid,但不能存储CBPeripheral
对象。所以那里有很大的缺点。
总而言之:它会起作用,但它并没有真正获得任何东西。它并不比调用retrievePeripherals:
然后连接它们快。您建议的方法仅限制CoreBluetooth
中的连接能力。但是一个有趣的问题。