Xcode 中的 iPhone 模拟器是否支持低功耗蓝牙



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

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

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

从本质上讲,我认为iPhone模拟器应该支持低功耗蓝牙。否则,模拟器上的设置应用程序中有一个选项就没有意义了。此外,中央管理器状态是CBCentralManagerStatePoweredOff但不是CBCentralManagerStateUnsupported,这将代表该平台不支持低功耗蓝牙。这也给人们带来了支持可能存在的希望。

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

根据Apple的此应用说明,模拟器确实支持低功耗蓝牙(4.0)。唯一的问题是,即使您有一台内置BLE的计算机,您也无法将模拟器与它一起使用,因为(我认为)您在BLE上占用了其他设备发现您的计算机的可用性,从而限制了Mac的功能。

因此,如果您去给自己买一个 BLE USB 加密狗,您将能够在模拟器中使用它.

编辑:从@JoeShaw添加信息:

不幸的是,似乎

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

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

$sudo nvram bluetoothHostControllerSwitchBehavior="never"

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

根据 http://www.doubleencore.com/2013/09/whats-new-in-bluetooth-le-ios-7/的说法,从iOS 7开始,核心蓝牙支持已从模拟器中删除。 我还没有弄清楚为什么,但这意味着你将来需要在真正的硬件上进行测试。

看起来

苹果似乎已经删除了技术说明2295,因为我在点击URL时被重定向。

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

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

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

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

在模拟器中使用 CoreBluetooth 的一种替代方法是使用北欧半导体的 CoreBluetooth-Mock 库,该库允许您存根 CoreBluetooth 并提供模拟/模拟外设,以便在使用模拟器时使用:

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

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

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

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

最新更新