StupidBeauty
Read times:1613Posted at:Thu Oct 3 03:36:49 2013
- no title specified

技术说明TN2295

在iOS 模拟器中测试Core Bluetooth 应用程序

iOS 5 中的一个新特性就是使用Core Bluetooth 框架来支持蓝牙4.0 低功耗(LE)设备。那些没有蓝牙低功耗苹果设备的小伙伴们,仍然可以使用iOS 模拟器和一个蓝牙低功耗通用串行总线(USB)适配器来开发及测试Core Bluetooth 的iOS 应用。此技术文章说明的就是,如果配置一个OS X 系统,使得iOS 模拟器支持Core Bluetooth 的iOS 应用。此技术文章同时还解释了,对于已经自带有蓝牙低功耗的OS X 系统,为什么还需要用一个蓝牙低功耗的适配器来支持模拟器测试。

技术文章还提供了关于以下内容的重要信息:使用一个OS X 系统来同时测试iOS 和OS X 的Core Bluetooth 应用程序的注意事项。当妳按照此技术文章中的说明来修改了系统之后,妳可能还是需要恢复系统,以便进行OS X 上的蓝牙低功耗应用程序测试。

内容目录

介绍

前提要求

启用iOS 模拟器支持的步骤

步骤 1 - 设置NVRAM

步骤 2 - 插上蓝牙低功耗通用串行总线适配器

步骤 3 - 验证NVRAM 设置

步骤 4 - 在iOS 模拟器中启用蓝牙

理解OS X 中的蓝牙驱动行为

在拥有内置蓝牙4.0芯片的OS X 系统上仍然需要插入蓝牙低功耗通用串行总线适配器

测试OS X 上的蓝牙低功耗应用程序

在内置了蓝牙低功耗芯片的系统上测试iOS / OS X 蓝牙低功耗应用程序

在没有内置蓝牙低功耗芯片的系统上测试iOS / OS X 蓝牙低功耗应用程序

介绍

iOS 5.0提供了Core Bluetooth 框架,可用来开发能够探测、连接并与蓝牙4.0 低功耗 (LE)设备通信的iOS 应用程序。测试Core Bluetooth 应用程序的标准方法是使用像 iPhone 4S 这样的设备,它们自带有 蓝牙低功耗 支持。为了使得那些没有 蓝牙低功耗iOS 设备的人也能开发Core Bluetooth 的iOS 应用程序,iOS 5 软件开发工具包 (SDK)模拟器提供了一个功能,可在一个第三方 蓝牙低功耗 通用串行总线 适配器的帮助下测试这些应用程序。此 技术文章 说明了,在一个OS X 系统上启用并验证模拟器支持功能的过程。

注意: 开发者技术支持(Developer Technical Support)在这种情况下是不支持iOS 模拟器(Simulators)的:在模拟器上的代码执行情况与在iOS 设备上的代码执行情况不同。当妳发现在模拟器上的代码执行情况与真实设备不同时,请通过 苹果开发者漏洞报告 网站提交一个漏洞报告。

重要:在将应用程序提交给苹果审查部门(App Review)之前,必须在一个带有蓝牙4.0功能的iOS 设备上测试妳的Core Bluetooth 应用程序。不要仅仅因为该应用程序在iOS 模拟器中正常运行就将妳的iOS 应用程序提交了。

前提要求

要想在iOS 模拟器环境中测试iOS 的Core Bluetooth 应用程序,妳必须拥有以下东西

  • •.装有Mac OS X 10.7.3 或更高版本的Mac系统

  • •.装有iOS 5 软件开发工具包的Xcode 4.2.1或更高版本

  • •. 蓝牙低功耗 通用串行总线适配器

对于已经带有蓝牙4.0功能的Mac 系统,仍然需要有一个蓝牙低功耗 通用串行总线适配器才能测试iOS 的Core Bluetooth 应用程序。在在带有蓝牙 4.0的 OS X 系统中还需要装上 蓝牙低功耗 通用串行总线 适配 小节中,解释了,为什么在这种情况下还需要有一个适配器。

启用iOS 模拟器支持的步骤

按照以下步骤来启用iOS 模拟器中对 Core Bluetooth 应用程序的支持。

步骤 1 - 设置NVRAM

打开一个终端(Terminal)窗口,按照清单1中的说明来执行NVRAM 命令

清单 1 设置bluetoothHostControllerSwitchBehavior 这个NVRAM 选项

user$ sudo nvram bluetoothHostControllerSwitchBehavior="never"

Password:********

在改变了这个设置之后不需要重启系统。参考理解 OS X 蓝牙驱动行为小节,以了解为什么这个步骤是必须的。

步骤 2 - 插上蓝牙低功耗通用串行总线适配器

在做了NVRAM 设置之后,必须将蓝牙低功耗 通用串行总线适配器插入电脑中。

步骤 3 - 验证NVRAM 设置

打开系统信息(System Information)程序,以确认,系统的蓝牙驱动是与内置的蓝牙主机控制器接口(HCI)匹配的。在硬件->蓝牙设置中,检查确保厂商标识 (Vendor ID)是"0x5AC"。参考以下的图1, 系统信息 程序此时就应当是这样显示的。

图 1 系统信息 - 蓝牙主机控制器接口

如果系统的蓝牙控制器被匹配到外接的蓝牙低功耗 通用串行总线适配器了,则,iOS 模拟器就无法使用外部的蓝牙控制器来支持蓝牙低功耗相关的服务了。在这种情况下,妳可能会看到如图2中这样的 系统信息 蓝牙面板。在这个图中,蓝牙驱动程序被匹配到了外接的 剑桥硅晶无线电 (CSR) 蓝牙低功耗 通用串行总线 适配器。如果遇到这种情况,则,拔出该适配器,回到 步骤 1 - 设置NVRAM选项

图 2 蓝牙驱动被匹配到了外部主机控制器接口

步骤 4 - 在iOS 模拟器中启用蓝牙

在Xcode 中,在iOS 5 iPhone/iPad 模拟器里启动妳的iOS 应用程序。当iOS 模拟器启动之后,关掉该程序,然后,打开设置(Settings)程序,选择通用(General)标签页,检查确认蓝牙开启状态(ON)。

在模拟器中重新启动该iOS 应用程序。此时,该iOS Core Bluetooth 应用程序应当就能够连接到并且与蓝牙低功耗设备通信了,就像它正在带有蓝牙低功耗支持的iOS 设备上运行一样。

注意:如果当前没有将蓝牙低功耗适配器插入到电脑中,则就无法在设置程序里开启蓝牙(☯:此时会无限菊花)。如果在不具有蓝牙4.0支持的情况下,在模拟器中运行CoreBluetooth 代码,则 -[CentralManager state] 会返回CBCentralManagerStatePoweredOff 这个结果。在一个不支持蓝牙低功耗的iOS 设备上运行的情况下, -[CentralManager state] 会返回CBCentralManagerStateUnsupported 这个结果。

理解OS X 中的蓝牙驱动行为

OS X 蓝牙驱动的默认行为是:当一个外接的蓝牙主机控制器接口设备被插入时,如果该主机控制器接口设备不是苹果的设备,则驱动程序会断开与内置蓝牙接口的连接,而连接到外接的主机控制器接口设备。这是为了方便那些在开发蓝牙低功耗相关的应用程序的OS X 软件开发者的,他/她们可能用的是旧版的Mac 系统,因而没有内置的蓝牙低功耗芯片。开发者将蓝牙低功耗 通用串行总线适配器插上,系统的蓝牙驱动就连接到新插入的主机控制器接口 设备上,然后,当那个正在开发当中的OS X Core Bluetooth 应用程序被启动时,就可以通过该适配器来访问蓝牙低功耗服务。这种行为的缺点就是,通过内置驱动建立的已有的蓝牙连接(例如蓝牙人机交互接口设备(HID))都会断开。

对于iOS Core Bluetooth 应用程序的开发者勒,这种默认行为就与iOS 模拟器不兼容了。为了模拟出与iOS 设备相同的蓝牙行为,模拟器必须与一个蓝牙低功耗主机控制器接口设备建立直接连接。如果内置的驱动程序在外接蓝牙低功耗主机控制器接口设备被插入时便自动与它匹配,则模拟器就无法直接操作外接的主机控制器接口设备了。要想控制内置蓝牙驱动程序的行为,就要用到bluetoothHostControllerSwitchBehavior 这个NVRAM 选项。如果此选项被设置为“从不”("never"),则,当蓝牙低功耗适配器被插入时,系统的蓝牙驱动程序不会切换到外接的主机控制器接口设备。

以下列出的是OS X 内置蓝牙驱动程序相关的行为选项。参考清单1的步骤来对bluetoothHostControllerSwitchBehavior 这个NVRAM 变量进行设置。

  • •. bluetoothHostControllerSwitchBehavior="never" //当有一个新的主机控制器接口设备被插入时,内置驱动程序仍然保持与内置的主机控制器接口设备连接

  • •. bluetoothHostControllerSwitchBehavior="always" //当有一个新的主机控制器接口设备被插入时,内置驱动程序断开与内置的主机控制器接口设备的连接,而连接到外接的主机控制器接口设备上

  • •. bluetoothHostControllerSwitchBehavior="default" //当有一个新的主机控制器接口设备被插入时,如果该设备(module)不是苹果的设备,则,内置驱动程序断开与内置的主机控制器接口设备的连接,而连接到外接的主机控制器接口设备上。

在拥有内置蓝牙4.0芯片的OS X 系统上仍然需要插入 蓝牙低功耗 通用串行总线 适配器

在已经有内置蓝牙4.0芯片的Mac 系统上,仍然需要插入一个 蓝牙低功耗 通用串行总线 适配器,才能支持iOS 5 模拟器中的Core Bluetooth 功能。之前在 理解 OS X 中的蓝牙驱动程序的行为 中已经说明了, 系统的蓝牙驱动程序已经占用了内置的蓝牙 主机控制器接口 设备。这就使得iOS 5 模拟器无法占用任何的蓝牙 主机控制器接口 设备了。所以,外接的 蓝牙低功耗 通用串行总线 适配器是必需的,这样才能在iOS 5 模拟器中测试Core Bluetooth 应用程序。

注意:对于内置蓝牙低功耗支持的Mac 系统,已知有一个问题,在OS X 10.7.3 系统中,当一个外接的蓝牙低功耗适配器(☯:原文是Bluetooth LS Adapter)被插入时,会出现问题。如果内置的驱动程序占用外接的蓝牙主机控制器接口设备,而将内置的主机控制器接口设备让给iOS 模拟器使用,则模拟器会无法占用内置的蓝牙主机控制器接口设备 - 雷达(Radar)漏洞报告: (r. 11267888)

测试OS X 上的蓝牙低功耗应用程序

如果妳在同时为iOS 和OS X 系统测试蓝牙低功耗应用程序,则,妳可能需要重置bluetoothHostControllerSwitchBehavior 这个选项。要分两种情况来考虑。

在内置了蓝牙低功耗芯片的系统上测试iOS / OS X 蓝牙低功耗应用程序

如果妳的系统中带有内置的蓝牙低功耗芯片,则,将NVRAM 中的bluetoothHostControllerSwitchBehavior="never"选项保持为这个值。当bluetoothHostControllerSwitchBehavior 被设置为"never"时,系统中的蓝牙驱动程序会保持对内置蓝牙主机控制器接口设备的占用,这个设备是支持蓝牙低功耗的,这样,OS X程序就会使用内置的主机控制器接口设备来访问蓝牙低功耗服务。

在没有内置蓝牙低功耗芯片的系统上测试iOS / OS X 蓝牙低功耗应用程序

如果妳的系统没有内置的蓝牙低功耗芯片,则,为了测试OS X 应用程序,妳就需要让内置的蓝牙驱动程序占用外接的蓝牙低功耗 通用串行总线适配器,以支持该OS X 应用程序的功能。为了实现这个效果,妳需要将bluetoothHostControllerSwitchBehavior 的值设置为“默认”("default")。当妳又想在iOS 模拟器中测试iOS 蓝牙低功耗应用程序时,就又需要将bluetoothHostControllerSwitchBehavior 的值设置成"never"。

未知美人

Your opinions
Your name:Email:Website url:Opinion content:
Recent comments
2017年4月~2019年4月垃圾短信排行榜Posted at:Thu Sep 26 04:51:48 2024
Qt5.7文档翻译:QWebEngineCookieStore类,QWebEngineCookieStore ClassPosted at:Fri Aug 11 06:50:35 2023盲盒kill -9 18289 Grebe.20230517.211749.552.mp4