关于CoreBluetooth
CoreBluetooth框架提供了你的iOS或Mac的应用在和配备了BLE(低功耗蓝牙)无线技术的设备沟通的时候需要的类。举个例子,你的应用程序可以发现、搜索BLE周边设备,并且连接交互,就像一个心率计或者数字温度计那样。从OSXv10.9和iOS6之后,Mac和iOS设备可以作为BLE周边设备使用,为别的设备提供数据,其中也包括对别的iOS设备或者Mac设备。
惊鸿一瞥
低功耗蓝牙无线通讯技术基于蓝牙4.0标准之中,定义一系列低功耗设备之间通讯的协议。Core bluetooth是低功耗蓝牙协议栈的一个抽象.这就是说,它对你隐藏了很多低级的实现细节,使开发者更简单的开发和低功耗蓝牙设备交互的app.
中心和周边是Core bluetooth的关键角色
在低功耗蓝牙通信中,这里有两个关键角色:中心(central)和周边(peripheral)。它们分别在低功耗蓝牙通信中充当着不同的角色。周边的特点是拥有别的设备想要的数据。中心的特点是利用周边提供的信息去完成一些任务。举个例子,一个装备低功耗蓝牙技术的数字温度计可以为iOS设备提供在用户友好界面显示出来的房间的温度。
就是因为BLE通信不同的玩家拥有不同的角色,不同玩家完成不同任务。周边通过广告包往外广播数据。中心在另一边,可以通过搜索拥有它感兴趣的数据的周边设备,当一个中心发现了周边,中心就可以向它发起连接请求然后开始搜索和交换它的数据。周边可以适当的做出反馈和回复。
Core Bluetooth 简化了蓝牙协议栈
Core Bluetooth框架抽象了蓝牙4.0的低级的细节.结果是,你需要实现的许多公共的低功耗蓝牙协议任务是非常简单的。如果你正在开发一个作为中心角色的app,Core Bluetooth让发现和连接周边,探索和交互周边数据变得简单。另外,Core Bluetooth也让你实现你的本地设备作为周边角色也很简单。
iOS 应用状态影响蓝牙行为
当你的iOS应用在后台或者悬挂状态时,它和蓝牙有关的功能将会受到影响。默认情况下,当你的应用程序在后台或者悬挂状态时,是不能使用蓝牙协议栈的功能的,你可以声明你的应用支持的Core Bluetooth执行的后台模式(这里有两种后台模式,一种是中心角色的,另一种是周边角色的,你可以声明其中一种也可以一起声明)。只有当你声明了至少一种后台执行模式,你的app进入后台时,蓝牙任务操作会变得不同。你在设计你的应用的时候应该考虑到这些不同。
即使是后台运动的应用也随时有可能被系统终止以释放足够的内存给那些正在前台的app。在iOS7及以后,CoreBlutooth支持保存状态中心和周边管理对象的状态信息以用来在应用被再此启动的时候恢复之前的状态。你可以使用这个功能去支持具有长期行为的蓝牙设备的交互。
追求最好的实践提高用户的体验
CoreCluetooth框架让你的应用控制在许多低功耗蓝牙的业务之上。追求最好的实践提供这一层可靠的方式控制并且提高用户的体验。
举个例子,许多你使用设备的随身听在空气中传递信号是作为中心或者周边角色时执行的任务。因为你的设备的无线电和凄然无线设备使用相同的频段通信,而且设备的无线电广播很费电,所以你的app应该尽可能少的使用无线电广播的功能部分。
怎样使用这个文档
如果你第一次使用CoreBluetooth框架,或者你对于低功耗的蓝牙一点基础没的,请通篇阅读这个文档。在CoreBluetooth概述中,你能够学到关于本书余下部分必要的关键术语和基础概念。
在你理解了这些基础内容以后,阅读执行通用的中心角色任务(Performing Common Central Role Tasks)学习怎样在你的手机上实现一个中心角色的app的开发。同样的,想学习怎么在你的设备上实现周边角色,请阅读执行通用的周边角色任务(Perforning Common Peripheral Role Tasks).
为了确保你的app可以执行顺利并实现最好的实践,仔细阅读一下内容:Core Bluetooth Background processing for iOS Apps(iOS应用CoreBluetooth的后台执行),Best Practices for Interacting with a Remote Peripheral Device(与远程周边设备通信最佳实践),还有Best Practices for Setting Up Your Local Device as a Peripheral(本地设备作为周边的最佳实践).
附加阅读
官方的Bluetooth Special Interest Group(SIG)website (蓝牙兴趣组织)提供低功耗蓝牙技术相关的远程咨询。在这里,你也可以找到Bluetooth 4.0 specification(蓝牙4.0标准)。
如果你是在开发使用低功耗蓝牙技术与苹果产品(包括mac,iPhone,iPad和iPod touch)连接的硬件设备。阅读Bluetooth Accessory Design Guidelines for Apple Products(苹果产品蓝牙附件设计指导)。如果你的蓝牙设备(通过低功耗蓝牙和iOS设备连接的那只)需要接受iOS设备上产生的通知,阅读Apple Notification Center Server(ANCS)Specification(ANCS说明书)
CoreBluetooth概述
CoreBluetooth框架让你的iOS或mac应用可以和BLE设备通信。举个例子,你的应用可以发现,探索低功耗周边设备并与之通信,像一些心率计、数字恒温控制器和一些其他设备。
这个框架为了使用低功耗设备的蓝牙4.0标准的抽象。这就是说,它对开发者隐藏了许多低级的细节,它使你能够更简单的开发和BLE设备交互的应用。因为框架是给予蓝牙4.0标准的,所有使用了一些标准里的概念和术语。这个章节介绍了一些你在基于CoreBluetooth框架开发一款伟大的应用所必需的关键术语和概念。
中心和周边设备以及它们在通信中的角色
在BLE通信中涉及到两个主要玩家:中心和周边。建立在一些传统客户端-服务器(c-s)的架构,周边的特点是拥有别的设备想要的数据。中心的特点是使用周边设备提供的信息去执行一些任务。像图1-1展示的那样,举例:一个心率计可能有你的应用想要通过界面又友好方式展现给用户的心率数据。
中心发现并且连接正在广告的周边设备
周边广播一些打包成广告包的数据。一个广告包的内容相对来说只包含了一小部分周边设备所掌握的有用数据,例如周边设备的名字和基础的功能。像这样,一个数字恒温计可以广告它提供的房间温度。在BLE中,广告是周边设备向外证明自己的基础手段。
中心,在另一边,可以搜索和监听任何它感兴趣的周边设备的广告信息,像图1-2,一个中心可以向任何它发现的正在广告的设备请求连接。
周边的数据结构
连接周边设备的目的就是获取它所掌握的数据。在你做这些之前呢,理解周边的数据结构是很有用的。
周边包含一个或多个服务或者提供有用的信息关于他们连接的信号长度。服务是一个数据和关联行为的集合可以完成一项设备(设备部分)功能。举个例子,一个心率计的服务可以暴露从心率传感器拿到的心率数据。
服务由特征组成或包含在其它服务之中(这表示与其它服务关联)。特征提供了更多关于这个服务的细节。举例,心率服务仅仅被描述成包含一个特征用于管理心率传感器的身体位置,另一个特征则仅仅是用来传递测量值。图1-3阐述了一种心率计的服务和特征。
[Service HeartRateService [Characteristic HeartRateMeasurement][Characteristic BodySensorLocation]]
中心获取并影响周边设备的数据
在中心成功建立和周边的连接之后,它可以发现周边设备所有范围的服务和特征(广告包可能只包括有效服务的一部分)
中心可以通过读写服务特征值的方式和周边服务交互。举例,你的应用向一个数字恒温计请求当前房间的温度,或者给它发一个你想设置的温度的数值。
中心,周边,周边数据代表什么
BLE通信里的主要玩家和数据交换都是一种简单粗暴的方式。
中心这边的对象
当你想要使用本地中心和远程周边交互时,你执行中心这边BLE通信的行为。除非你设置一个本地的周边设备-并且使用它去相应一个中心-大多数的蓝牙事件都会发生在中心这边。
关于怎样在你的app上实现中心角色。看执行通用中心角色任务(Performing Common Central Role Tasks)和与远程设备通讯的最佳训练( Best Practices for Interacting with a Remote Peripheral Device)
本地中心和远程周边
在中心这边,一个本地周边的抽象是CBCentralManager对象。这个对象用来管理发现连接远程周边设备(远程周边的抽象是CBPeripheral对象),包括搜素,发现,和连接正在广播的周边,图1-4显示中心和周边设备在CoreBluetooth框架里的抽象。
CBservice和CBCharacter是对象远程数据的抽象
当你和远程周边的数据交互时,你实际是和它的服务还有特征交易。在CoreBluetooth框架中,远程周边的服务的抽象是CBService对象。显而易见,远程周边的服务的特征的抽象就是CBCharacteristic对象。图1-5阐明了远程周边的服务和特征的基础架构。
[CBPeriohral [CBService [CBCharacteristic ][CBCharacteristic ] ] [CBService ]]
周边这边的对象
从OSX10.9和iOS6开始,一个本地的周边设备可以被CBPeripheralManager对象抽象,这些对象用来管理本地设备公共的服务,设备通过这些广告服务和特征的数据的服务与远程中心设备(用CBCentral对象抽象)联系。周边管理对象也被用来回应远程中心的读写操作。图1-6显示了在CoreBluetooth框架里本地周边和远程中心的抽象
CBMutableService 和 CBMutableCharacteristic对象是本地中心数据的抽象
当你设置并与一个本地周边数据通信时,你实际上是在和服务和特征的可变版本交易,在CoreBluetooth中,本地周边的服务由CBMutableService抽象,显而易见的,本地周边的服务的特征的抽象就是CBMutableCharacteristic对象。图1-7说明了本地周边的服务和特征的基础架构。
[CBMutableService [CBMutableCharacteristic ][CBMutableCharacteristic ][CBMutableCharacteristic ]]
学习更多如何在本地设备实现周边角色,看执行通用周边角色任务( Performing Common Peripheral Role Tasks)和设置本地设备作为周边的最佳实践( Best Practices for Setting Up Your Local Device as a Peripheral.)
网友评论