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

54
我正在新的Mac mini上尝试一些iOS测试应用程序,该设备支持蓝牙低功耗。这些应用程序使用CoreBluetooth框架。但是,我无法在Xcode的iPhone模拟器中使蓝牙工作。
当我分配一个新的CBCentralManager时,centralManagerDidUpdateState:会收到,表示“蓝牙当前已关闭”。
第一次运行文本应用程序时,会打开一个框,看起来非常有问题(仅使用语言变量,而不是实际文本),并带有两个按钮。第一个按钮将我带到设置面板,在那里有一个启用蓝牙的选项。然而,即使我告诉它启用蓝牙,它也只显示旋转动画,既不完成也不取消。即使重新启动Mac,仍然只有旋转动画。该框也不再弹出。
基本上,我认为iPhone模拟器应该支持蓝牙低功耗。否则,在模拟器的设置应用程序中存在选项就没有什么意义了。此外,中央管理器状态是CBCentralManagerStatePoweredOff而不是CBCentralManagerStateUnsupported,后者表示“平台不支持蓝牙低功耗”。这也给人们带来了希望,即支持可能存在。
  • iPhone模拟器是否支持蓝牙低功耗?
  • 如果支持,我该如何启用它?
7个回答

48
根据苹果的这份应用说明,模拟器支持蓝牙低功耗(4.0)。唯一的问题是,即使你的电脑内置了BLE,你也不能与之一起使用模拟器,因为(我认为)你占用了BLE的可用性以便其他设备能够发现你的电脑,从而限制了Mac的功能。
所以,如果你购买一个BLE USB dongle,你将能够在模拟器中使用它。
编辑:添加@JoeShaw的信息:

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


是的,这是最新的更新。但是,即使您连接了BLE USB dongle,它可能会出现错误,导致Mac OS可能会注册到dongle而不是内部设备。然后,模拟器仍然无法使用内部设备,并且由于外部dongle被阻止,它也无法工作。因此,我建议在系统启动后再连接dongle以避免这个问题。 - Etan
好的信息。你从哪里获得了一个加密狗? - chwi
1
没有买到一个,只是我在苹果网站上读到的信息。我选择了真正的iPhone 4S,因为否则你就无法体验到所有的错误。 - Etan
尝试了http://developer.apple.com/library/ios/#technotes/tn2295/_index.html上的步骤,但模拟器仍无法打开蓝牙。我正在使用TI CC2540 USB dongle。 - Gamma-Point
Gamma,我感觉你正在尝试打开普通蓝牙。在iOS中,Bt4没有开关,必须在程序中进行检查。 - chwi
7
很遗憾,似乎iOS 7模拟器中已经取消了核心蓝牙支持。参考链接:http://www.doubleencore.com/2013/09/whats-new-in-bluetooth-le-ios-7/。此外,相应的技术说明文档似乎也已被删除。 - Joe Shaw

15

我一直在使用模拟器测试BLE应用程序 - 但是您需要在OSX 10.7上运行。正如Wilhelmsen所提到的,您还需要一个BLE USB dongle。此外,您需要设置NVRAM设置:

$sudo nvram bluetoothHostControllerSwitchBehavior="never"

阅读这篇苹果公司的技术说明,了解如何使用模拟器测试BLE应用程序:http://developer.apple.com/library/ios/#technotes/tn2295/_index.html


仍然无法工作。 在Xcode 6.1,OSX 10.9.5上,模拟器iPhone5~6plus。 - allenlinli

12

3
问题在于与所有不同的蓝牙适配器存在兼容性问题,需要花费太多的精力来解决。因此,苹果放弃了模拟器的蓝牙支持,因为遇到的错误使模拟器的行为与真实设备不同。 - Etan

5

我发现苹果在他们自己的示例中写道模拟器不能用于测试基于Core Bluetooth的应用程序。

重要提示:此项目需要蓝牙LE设备(目前仅限iPhone 4S),无法在模拟器上运行。


2
引用苹果的方式真棒! - dustinrwh

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

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

它确实需要一些小的代码更改,但它提供的接口几乎与CoreBluetooth相同。此外,它也非常适合编写集成测试。

2

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

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


我使用的是2011年中期的Mac mini服务器,所以它应该具备蓝牙4.0功能。 - Etan
根据苹果的文档,没有外部dongle是不行的。 - chwi
1
苹果已经放弃了对蓝牙的支持。以下是苹果员工的确认链接:https://forums.developer.apple.com/thread/14983 - Gultekin

0

实际上我在模拟器中尝试过,但不起作用。 模拟器无法识别您的计算机是否配备了蓝牙4.0,但是如果您正在使用Xcode中的命令行工具项目,则可以正常工作。只适用于您想在命令行工具中创建某些东西的情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接