【问题标题】:Reconnect to a BLE device after pulling the battery拔下电池后重新连接到 BLE 设备
【发布时间】:2015-02-22 00:04:50
【问题描述】:

我有一个 BLE 设备,我正在编写一个与之配对的应用程序。我可以毫无问题地发现并连接到设备。但是,如果我已连接并拉动并重新插入 BLE 设备上的电池,我会收到 didDisconnectPeripheral 回调,但即使我仍在扫描,我也永远不会收到另一个 didConnectPeripheral。我也试过打电话给retrieveConnectedPeripheralsWithServicesretrievePeripheralsWithIdentifiers,但它们都没有返回任何东西。

我如何在我的 BLE 设备上循环电源后可靠地重新连接?

【问题讨论】:

  • 拔下电池对外设的配对模式有何影响?
  • 它会立即启动并开始广播。

标签: ios bluetooth-lowenergy core-bluetooth ios-bluetooth


【解决方案1】:

一旦外围设备断开连接,您就可以发出另一个连接 - 一旦设备再次可见,iOS 将自动重新连接到设备并调用您的 didConnectPeripheral: 委托方法

-(void) centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error {
    NSLog(@"Disconnected from peripheral");
    [central connectPeripheral:peripheral options:nil];
}

无需重新扫描/重新发现外围设备。

您可能需要更全面的实现来更新 UI 等。

这是一些连接到外围设备并显示供应商信息的示例代码 - https://github.com/paulw11/BTBackground

【讨论】:

  • 它再也不会打电话给我的didConnectPeripheral了。我注意到您使用的是 self.central 而不是正在传递给didDisconnectPeripheralCBCentralManager。有什么理由吗?
  • 不,没关系。实际上,当我将代码复制到上面的答案时,我更改了代码。你的外设是什么?我的示例项目使用 TI sensorTag 和 LightBlue Bean 测试正常
  • 好的,我在didDisconnectPeripheral 中做了一些额外的事情。一旦我把它归结为你所拥有的,它就可以工作。我需要弄清楚是什么破坏了它!谢谢!
  • 哇,我试图解决这个问题已经有一段时间了,我在didDisconnectPeripheral中添加了各种方法。这很漂亮,对我来说效果很好!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
  • 2016-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多