0

重启手机后,我尝试重新连接外围设备。

我正在使用位置更新回调在后台启动 BLE 连接过程。ble 堆栈在后台正确初始化(已发送 CBCentralManagerStatePoweredOn 事件)

外围设备上的“连接”已启动,但未建立连接...

重启后重新连接设备有什么想法吗?

4

1 回答 1

0

当您说外围设备上的“连接”启动时,您的意思是您使用 connectPeripheral: 手动连接?过去我在 iOS 上的连接上遇到了困难,并注意到 CoreBluetooth 在内部有很多你必须避免的竞争条件。通常,我建议在 CoreBluetooth 回调之后对所有连接请求执行至少 20 毫秒的调度延迟。这将避免大多数竞争条件。您可以自己测试这一点,例如设置一个挂起的连接,然后在外围设备连接之前调用 cancelPeripheralConnection:。当您收到 didFailToConnect 回调时,立即再次调用 connectPeripheral:。现在连接应该处于连接状态为“正在连接”的“边缘”模式 但实际上外围设备永远不会连接。此时再次调用 connect 也无济于事。

我不知道这是否是您的问题的原因,但它可能是。此外,在 CentralManager 状态恢复后,我建议让框架“稳定”大约一秒钟,然后再开始与之交互。

另一件重要的事情是,在您获得 AppDelegate 的 applicationDidFinishLaunchingWithOptions: 回调之前,您不会重新启动管理器。提前这样做会导致奇怪的行为。

请进行更多调查,如果您仍有问题,请告诉我。我可能有一些进一步的提示。/安东

于 2016-10-02T12:23:10.500 回答