【问题标题】:Multiple CBCentralManager instances?多个 CBCentralManager 实例?
【发布时间】:2015-05-18 17:26:08
【问题描述】:

是否支持多个CBCentralManager 实例?如果是,它们是在哪个 iOS 版本中开始支持的?

我在 Apple 邮件列表中发现 multiple emails 表明它们不是。但是,这不是通过例外或理论上的+sharedCentralManager 来强制执行的。一个说文档说它们不受支持。不过the documentation中不再提及,目前头文件注释(iOS 8.3 SDK)为:

/*!
 *  @class CBCentralManager
 *
 *  @discussion Entry point to the central role. Commands should only be issued when its state is <code>CBCentralManagerStatePoweredOn</code>.
 *
 */

我不希望 CBPeripheral 实例可以在 CBCentralManager 实例之间移植(这不是这个问题的意义所在),我只希望蓝牙堆栈中有多个“窗口”(没有任何不规则行为)。

【问题讨论】:

  • 最好有一个 CBCentralManager 实例并围绕它设计您的应用程序。为什么需要多个?
  • 我看不出这有多“好”——尤其是因为这本质上是在强制使用单例,我通常认为这是糟糕的设计。要么有效,要么无效。如果它不起作用,那很公平,但这似乎完全没有记录(而且它以前有记录,因此是问题)。

标签: ios bluetooth core-bluetooth


【解决方案1】:

从 iOS 8.3 开始,似乎创建第二个 CBCentralManager 实例将导致第二个实例将其状态报告为 CBCentralManagerStateUnsupported (2)。因此,不支持CBCentralManager 的多个实例。

【讨论】:

  • 我没有观察到相同的行为。我正在运行 8.3 并且有多个管理器,都处于开机状态。
  • @Kevin Hi,正如你所说,iOS 8.3 支持多个管理器,但它们都可以连接到同一个外围设备吗?
  • 似乎有人从 Apple 支持那里得到了与此相矛盾的答案:stackoverflow.com/questions/32221338/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
  • 2010-09-24
  • 2017-01-29
  • 2014-03-05
  • 2012-05-25
  • 1970-01-01
相关资源
最近更新 更多