【问题标题】:CoreBluetooth `retrieveConnectedPeripheralsWithServices` returns disconnected peripheralsCoreBluetooth `retrieveConnectedPeripheralsWithServices` 返回断开连接的外围设备
【发布时间】:2016-11-08 04:06:48
【问题描述】:

我想知道CBManager 的retrieveConnectedPeripheralsWithServices 的语义。每次我使用它时,我都会返回 CBPeripheral 实例,状态为 CBPeripheralStateDisconnected。

重新连接没问题,但是这个方法不是应该返回已连接个外设吗?

【问题讨论】:

  • “连接的外围设备列表可以包括那些由其他应用程序连接的外围设备,并且需要使用 connectPeripheral:options: 方法在本地连接才能使用它们。”。您的应用中是否有多个 CBCentralManager 实例?
  • 不,只有一个(也就是说,让我检查一下是否没有泄漏)。它甚至在(成功)连接到设备后立即发生。

标签: ios cbperipheral cbperipheralmanager


【解决方案1】:

不幸的是,这是预期的行为。我不得不承认这有点违反直觉,但外围状态始终与您的应用程序相关。这意味着如果您使用其他应用程序或通过蓝牙系统设置连接/配对/绑定外围设备,它仍将在您的应用程序中显示为断开连接。如果您在应用中连接了一些外围设备,它们将显示为已连接。

【讨论】:

  • 我可以理解,由于沙盒概念,状态通常是每个应用程序。我想知道我是否应该至少获得连接到我的应用程序 within 的设备的连接状态,或者是否有可能每个 CBCentralManager 甚至隔离状态(即对于每个新的 CBCentralManager,无论如何,我总是“断开连接”)?
  • 是的,这也可能发生。来自一个CBCentralManager 的外设不能在另一个CBCentralManager 中使用。我建议只使用一个CBCentralManager,否则你可能会遇到麻烦。关于这个主题的Apple Developer Forum 有很好的阅读。
猜你喜欢
  • 2017-02-28
  • 2013-10-13
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多