Core Bluetooth概述
这个Core Bluetooth框架让你的IOS 和 Mac 应用程序与蓝牙低功耗设备交互。例如,你的应用程序能够发现,探索,和与低功耗外围设备交互,比如心率监测器,数字恒温控制器,甚至其他的iOS 设备。
这个框架是为了使用低功耗设备的蓝牙4.0规范的抽象,也就是说,它为你隐藏了一些规范里的低水平细节,开发者利用它更容易来开发与蓝牙低功耗设备的应用程序。因为这个框架是在该规范的基础上,规范中的一些概念和术语已经被采用。这个章节给你介绍你需要知道使用Core Bluetooth框架开发一个好的应用程序所需要的主要术语和概念。
中央和外围设备和它们在蓝牙交互中的角色
在蓝牙低功耗交互中涉及到两个主要的成员:中央和外围设备。基于某种传统的客户端-服务端架构,一个外围设备一般有其他设备需要的数据,一个中央通过外围设备提供的服务信息来完成一些特别的任务,如图1-1所示,例如,一个心率监测器有你的Mac或者iOS应用程序可能需要的有用的信息,为了已一种友好的方式显示用户的心率。
中央发现和连接正在广播的外设(外围设备)
外设会广播一些它们在广播包中有的数据。一个广播包是一些相当少的数据,可以包含一个外设必须提供的有用信息,比如外设的名称和主要功能。一个实际的例子,一个数字恒温控制器可能广播它给一个房间提供当前温度。在蓝牙低功耗中,广播是主要的方式来使外设被知道。
一个中央,在另一方面,可以扫面和监听它感兴趣的一些正在广播信息的外设,如图1-2. 中央可以请求连接它已经发现在广播的外设。
外设的数据结构是怎样的
连接到外设的目的是开始与它提供的数据进行探索和交互。在你做这些之前,然而,它有助于理解外设的数据结构是怎样的。
外设可能包含一个或多个服务或者提供一些有用的信息如它们被连接的信号强度。一个服务是一个数据的集合,并且为完成一些功能和一个设备(或部分设备)的特性所相关的行为。一个心率监测器的服务可能是来显示从心率监测传感器来的心率数据。
服务本身是由特征或包括的服务(即引用其他服务)组成的,一个特征对外设的服务提供更多的详情。例如,心率服务,只是描述可能包含的一个用来描述设备心率传感器的身体位置的特征和另一个传输心率测量数据的特征。图1-3阐述了一种心率监测器的服务和特征的可能结构。
中央与外设的数据之间探索与交互。
当一个中央与外设建立连接成功之后,它能够发现该外设提供的全部范围的服务和特征(广播数据可能只包含有效服务的一小部分)。
中央也可以通过给服务的特征值进行读或写来与外设服务进行交互,例如,你的应用程序可以从数字恒温控制器来请求当前房间的温度,或者提供一个恒温值来设置房间的温度。
中央,外设,和外设数据是如何表现的
一个简单直接的方法来将蓝牙低功耗交互中主要成员和有关数据映射到Core Bluetooth框架。
在中央端的对象
当你使用一个本地中央与一个远程外设交互,你是在蓝牙低功耗交互的中央端执行操作。除非你设置了一个本地的外设,用它来响应中央端的请求,你的蓝牙事务主要是在中央端。
关于如何在你的应用程序实现中央端的信息,请看Performing Common Central Role Tasks 和 Best Practices for Interacting With a Remote Peripheral Device.
本地中央和远程外设
在中央端,使用CBCentralManager
对象来代表一个本地中央设备,这个对象是用来管理发现和连接远程外设(用CBPeripheral
表示),包括扫描,发现,连接正在广播的外设。图1-4显示在Core Bluetooth框架中本地中央和远程外设是如何表示的。
远程外设的数据是通过CBService
和CBCharacteristic
对象来表示的。
当你和远程外设(用CBPeripheral
对象表示)的数据进行交互,你是在处理它的服务和特征。在Core Bluetooth框架中,远程外设的服务用CBService
对象表示,相似的,远程外设的服务的特征是用CBCharacteristic
对象表示,如图1-5阐述了一个远程外设的服务和特征的基本结构。
在外设端的对象
在OSX v10.9和iOS6, Mac和iOS设备可以作为蓝牙低功耗外设,给其他的设备服务数据,包括其他的Macs, iPhones,和iPads。当设置你的设备来实现外设角色,你是在蓝牙低功耗交互中的外设端执行操作。
本地外设和远程中央
在外设端,本地外设用CBPeripheralManager
对象来表示,这个对象是用来发布在本地外设的服务和特征的数据库中的服务并且广播这些服务给远程中央设备(用CBService
表示)。外设管理对象也可以用来响应远程中央的读写请求。图1-6显示在Core Bluetooth框架中本地外设和远程中央如何表示。
本地外设数据是通过CBMutableService
和CBMutableCharacteristic
对象来表示
当你设置和本地外设(使用CBPeripheralManager
对象表示)数据交互,你是在处理它的服务和特征的可变译本。在Core Bluetooth框架中,本地外设的服务用CBMutableService
对象来表示,相似的,本地外设的服务的特征用CBMutableCharacteristic
对象来表示,图1-7阐述了本地外设服务和特征的基本结构。
关于如何设置你的本地设备来实现外设角色,请看Performing Common Peripheral Role Tasks 和 Best Practices for Setting Up Your Local Device as a Peripheral.