核心蓝牙框架提供了iOS和Mac应用程序与配备蓝牙低能量无线技术的设备通信所需的类。例如,您的应用程序可以发现、探索和与低能量外围设备(如心率监视器和数字恒温器)交互。从MacOS 10.9和iOS 6开始,Mac和iOS设备还可以作为蓝牙低能耗外围设备,向其他设备(包括其他Mac和iOS设备)提供数据。在iOS 10.0上或之后链接的iOS应用程序必须在其info.plist文件中包含其需要访问的数据类型的使用说明键,否则将崩溃。要专门访问蓝牙外围设备数据,它必须包括nsbluetouth外围设备使用说明。
![](https://img.haomeiwen.com/i13581931/026c5fe9b8490787.png)
- At a Glance: 蓝牙低能量无线技术基于蓝牙4.0规范,该规范定义了一组用于低能量设备之间通信的协议。核心蓝牙框架是蓝牙低能量协议栈的抽象。这就是说,它隐藏了许多低层次的规范细节,让开发者更容易开发与蓝牙低能量设备交互的应用程序。
-
Centrals and Peripherals Are the Key Players in Core Bluetooth: 中心和外围设备是核心蓝牙的关键设备。在蓝牙低能量通信中,有两个关键角色:中央和外围设备。每个玩家都有不同的角色。外围设备通常具有其他设备所需的数据。中心通常使用外围设备提供的信息来完成某些任务。例如,配备蓝牙低能耗技术的数字恒温器可以为iOS应用程序提供房间温度,然后以用户友好的方式显示温度。
每个玩家在执行角色时执行一组不同的任务。外围设备通过在空中发布他们拥有的数据来宣传他们的存在。中心扫描附近可能有他们感兴趣的数据的外围设备。当中心发现这样的外围设备时,中心请求连接到外围设备,并开始探索和与外围设备的数据交互。外围设备负责以适当的方式响应中心。 - Core Bluetooth Simplifies Common Bluetooth Tasks: 核心蓝牙框架从蓝牙4.0规范中抽象出低级细节。因此,你需要在应用程序中实现的许多常见的蓝牙低能耗任务都被简化了。如果您正在开发一个实现中心角色的应用程序,那么核心蓝牙使您能够轻松地发现和连接外围设备,以及探索和与外围设备的数据交互。此外,核心蓝牙使设置本地设备以实现外围设备角色变得容易。
-
iOS App States Affect Bluetooth Behavior: 当您的iOS应用程序处于后台或挂起状态时,其蓝牙相关功能会受到影响。默认情况下,您的应用程序在后台或挂起状态下无法执行蓝牙低能耗任务。也就是说,如果你的应用需要在后台执行蓝牙低能量任务,你可以声明它支持一个或两个核心蓝牙后台执行模式(中心角色有一个,外围角色有一个)。即使您声明这些后台执行模式中的一种或两种,当您的应用程序处于后台时,某些蓝牙任务的操作也会有所不同。在设计应用程序时,您需要考虑这些差异。
即使是支持后台处理的应用程序,系统也可以随时终止,为当前前台应用程序释放内存。从iOS 7开始,核心蓝牙支持为中央和外围设备管理器对象保存状态信息,并在应用程序启动时恢复该状态。您可以使用此功能支持涉及蓝牙设备的长期操作。
5 Follow Best Practices to Enhance the User Experience: 核心蓝牙框架让你的应用程序控制了许多常见的蓝牙低能耗交易。遵循最佳实践以负责任的方式利用这一级别的控制,并增强用户体验。
例如,在执行中心或外围角色时执行的许多任务都使用设备的机载无线电通过空中传输信号。由于您的设备的无线电与其他形式的无线通信共享,并且由于无线电使用对设备的电池寿命有不利影响,因此请始终设计应用程序,以尽量减少其使用无线电的次数。
Central and Peripheral Devices and Their Roles in Bluetooth Communication
![](https://img.haomeiwen.com/i13581931/4e6997b15a841b44.png)
如何表示中心、外围设备和外围数据
当使用本地中心与远程外围设备交互时,您正在蓝牙低能量通信的中心端执行操作。除非您正在设置本地外围设备并使用它来响应中心的请求,否则大多数蓝牙事务都将在中心端进行。
本地中心和远程外围设备
在中央侧,本地中央设备由cbCentralManager对象表示。这些对象用于管理发现的或连接的远程外围设备(由CBPeripheral对象表示),包括扫描、发现
![](https://img.haomeiwen.com/i13581931/bc48b5f60f500cbc.png)
远程外围设备的数据由CBService和CBCharacteristic对象表示。
当您与远程外围设备上的数据交互时(由CBPeripheral对象表示),您将处理其服务和特性。在核心蓝牙框架中,远程外围设备的服务由CBService对象表示。类似地,远程外围设备的服务特性
![](https://img.haomeiwen.com/i13581931/c396b40d47e54b37.png)
本地外围设备和远程中心
在外围设备方面,本地外围设备由CBPeripherManager对象表示。这些对象用于管理本地外围设备的服务和特征数据库中的已发布服务,并将这些服务通告给远程中央设备(由cbcentral对象表示)。外围设备管理器对象还用于响应读取
![](https://img.haomeiwen.com/i13581931/a1ef6c3dfb971875.png)
本地外围设备的数据由cbmutableservice和cbmutablecharacteristic对象表示。
当您在本地外围设备(由CBPeripherManager对象表示)上设置和与数据交互时,您将处理其服务和特性的可变版本。在核心蓝牙框架中,本地外围设备的服务由CBmutableservice对象表示。类似地,局部外围设备的特征
![](https://img.haomeiwen.com/i13581931/16604a8d8e8db8fa.png)
网友评论