[英]Connect to bluetooth peripheral after reboot
重新启动手机后,我尝试重新连接外围设备。
我正在使用位置更新回调在后台启动BLE连接过程。 ble堆栈已在后台正确初始化(发送了CBCentralManagerStatePoweredOn事件)
外围设备上的“连接”已启动,但未建立连接...
重启后是否有重新连接设备的想法?
当您说外围设备上的“连接”已启动时,是否表示您使用connectPeripheral手动连接:? 过去,我在iOS上的连接问题上苦苦挣扎,并注意到CoreBluetooth在内部必须避免许多竞争条件。 通常,我建议始终对CoreBluetooth回调之后发生的所有连接请求至少进行20ms的调度延迟。 这样可以避免大多数比赛情况。 您可以自己进行测试,例如,通过设置挂起的连接,然后在外围设备连接之前稍后调用cancelPeripheralConnection:。 当您收到didFailToConnect回调时,请立即再次调用connectPeripheral:。 现在,连接应处于“ limbo”模式,其中连接状态为“正在连接”,但实际上外围设备将永远不会连接。 此时再次调用connect不会执行任何操作。
我不知道这是否是造成您问题的原因,但可能是原因。 同样,在CentralManager状态恢复后,我建议在开始与框架进行交互之前,让框架“停顿”一秒钟左右。
另一重要的事情是,直到获得applicationDidFinishLaunchingWithOptions:AppDelegate的回调之后,您才可以重新启动管理器。 更早地执行此操作可能会导致奇怪的行为。
请进行更多调查,如果仍有问题,请告诉我们。 我可能还有其他提示。 /安东
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.