54

我正在新的 Mac mini 上尝试一些 iOS 测试应用程序,它支持蓝牙低功耗。CoreBluetooth框架用于这些但是,我无法让蓝牙在 iPhone 模拟器中工作,这是 Xcode 的一部分。

当我分配一个新的CBCentralManager时, centralManagerDidUpdateState: 接收CBCentralManagerStatePoweredOff代表蓝牙当前已关闭的数据。

我第一次运行文本应用程序时,打开了一个看起来很错误的框(仅使用了语言变量,而不是实际文本),并带有两个按钮。第一个引导我进入设置面板,其中有一个启用蓝牙的选项。但是,在我告诉它启用蓝牙后,它只显示旋转动画,既不会完成也不会取消。即使在重新启动 Mac 后,仍然只有旋转动画。盒子也不再打开了。

本质上,我认为 iPhone 模拟器应该支持低功耗蓝牙。否则,在模拟器的设置应用程序中有一个选项并没有真正意义。此外,中央管理器状态是CBCentralManagerStatePoweredOff但不代表CBCentralManagerStateUnsupportedThe platform does not support Bluetooth Low Energy。这也带来了支持可能存在的希望。

  • iPhone 模拟器是否支持低功耗蓝牙?
  • 如果是,我该如何启用它?
4

7 回答 7

48

根据 Apple 的这个 appnote,模拟器确实支持蓝牙低功耗 (4.0)。唯一的问题是,即使你有一台内置 BLE 的电脑,你也不能和它一起使用模拟器,因为(我认为)你占用了 BLE 上的可用性,让其他设备发现你的电脑,从而限制了Mac 的功能。

因此,如果您自己购买 BLE USB 加密狗,您将能够在模拟器中使用它。

编辑:从@JoeShaw 添加信息:

不幸的是,iOS 7 的模拟器似乎已经放弃了核心蓝牙支持。参考:doubleencore.com/2013/09/whats-new-in-bluetooth-le-ios-7。此外,链接的技术说明似乎已被删除。

于 2012-06-15T10:56:33.607 回答
14

我一直在使用模拟器来测试 BLE 应用程序 - 但您需要使用 OSX 10.7。正如 Wilhelmsen 提到的,您还需要一个 BLE USB 加密狗。此外,您需要设置 NVRAM 设置:

$sudo nvram bluetoothHostControllerSwitchBehavior="never"

有关使用模拟器测试 BLE 应用程序的更多详细信息,请参阅 Apple 的此技术说明:http: //developer.apple.com/library/ios/#technotes/tn2295/_index.html

于 2012-08-13T15:38:55.813 回答
11

根据http://www.doubleencore.com/2013/09/whats-new-in-bluetooth-le-ios-7/,从 iOS 7 开始,模拟器已不再支持核心蓝牙。我还没有想到找出原因,但这意味着您将来需要在真实硬件上进行测试。

看起来 Apple 已经删除了 Tech Note 2295,因为当我点击 URL 时会被重定向。

于 2013-11-15T20:36:18.113 回答
5

我发现 Apple 在他们自己的示例中写道,模拟器不能用于测试基于核心蓝牙的应用程序。

重要提示:此项目需要支持蓝牙 LE 的设备(目前只有 iPhone 4S),并且无法在模拟器上运行。

于 2012-04-17T08:40:38.100 回答
2

过去一周我一直在开发 BLE 应用程序,并且可以自信地说不,除非您使用的 mac 具有 BLE(Macbook Air),否则模拟器不支持 BLE - 但即便如此我也不是 100% 确定如何启用此功能(很可能只需在您的 Mac 和模拟器上开启 BLE)。

如果您没有启用 BLE 的 mac,则必须为自己找一个 4s 进行测试!

于 2012-04-05T14:50:10.573 回答
0

其实我在模拟器里试过了,还是不行。模拟器无法识别您的计算机中是否有蓝牙 4.0,但如果您在 Xcode 中使用命令行工具项目,则它可以工作。仅适用于您想在命令行工具中创建内容的情况。

于 2017-12-19T17:07:09.703 回答
0

在模拟器中使用 CoreBluetooth 的另一种方法是使用 Nordic Semiconductor 的 CoreBluetooth-Mock 库,它允许您将 CoreBluetooth 存根并提供模拟/模拟外围设备以在使用模拟器时使用:

https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock

它确实需要一些小的代码更改,但它提供的接口几乎与 CoreBluetooth 的接口相同。

它也非常适合编写集成测试。

于 2021-12-02T17:16:25.803 回答