重新启动手机后,我尝试重新连接外围设备。
我正在使用位置更新回调来在后台启动BLE连接过程。 ble stack在后台正确初始化(CBCentralManagerStatePoweredOn事件已发送)
外围设备上的“连接”已启动但未建立连接...
重启后重新连接设备的想法吗?
答案 0 :(得分:0)
如果您说外围设备上的“连接”已启动,那么您的意思是使用connectPeripheral手动连接:?我过去在iOS上遇到困难,并注意到CoreBluetooth在内部有很多竞争条件你必须要避免。通常我建议的是始终对CoreBluetooth回调后发生的所有至少20ms的连接请求进行调度延迟。这将避免大多数竞争条件。您可以自行测试,例如通过设置挂起连接,然后在外围设备连接之前调用cancelPeripheralConnection :.当你得到didFailToConnect回调时,立即再次调用connectPeripheral:。现在连接应该处于“边缘”模式,其中连接状态是“连接”但实际上外围设备永远不会连接。此时再次呼叫连接也不会做任何事情。
我不知道这是否是您问题的原因,但可能是。此外,在CentralManager状态恢复后,我建议让框架“开始”大约一秒钟,然后再开始与之交互。
另一个重要的事情是,在获得applicationDidFinishLaunchingWithOptions:AppDelegate的回调之前,你不会重新启动管理器。提前做这件事会导致奇怪的行为。
请进行更多调查,如果您仍然遇到问题,请告知我们。我可能会有一些进一步的提示。 /安东