2016-10-02 79 views
0

我尝试在重新启动手机后重新连接外设。重新启动后连接到蓝牙外设

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

“连接”的外围已启动,但没有建立连接...

任何想法重启后重新连接的设备?

回答

0

当你说外设上的“连接”开始时,你的意思是你使用connectPeripheral手动连接:?我过去一直在与iOS上的连接斗争,并注意到CoreBluetooth在内部存在很多竞争条件,您必须避免。通常情况下,我建议总是对所有连接请求执行一次调度延迟,在CoreBluetooth回调后发生的最少20ms。这将避免大多数的比赛条件。您可以自行测试,例如设置待定连接,然后在稍后调用cancelPeripheralConnection:在外设连接之前。当你得到didFailToConnect回调,然后立即再次调用connectPeripheral:。现在,连接应处于连接状态为“连接”的“限制”模式,但实际上外围设备将不会连接。再次调用连接将不会在这一点上做任何事情。

我不知道这是你的问题的原因,但它可能是。此外,在恢复CentralManager状态时,我建议让框架在开始与之交互之前“解决”大约一秒。

另一个重要的事情是,直到获得AppDelegate的applicationDidFinishLaunchingWithOptions:回调后,才会重新启动管理器。这样做可能会导致奇怪的行为。

请做一些更多的调查,如果您仍然有问题,请让我知道。我可能会有一些进一步的提示。/Anton