您的位置:首页 > 移动开发 > IOS开发

【译】iOS蓝牙编程指南 -- 核心蓝牙概述

2016-04-13 15:24 561 查看


小引

随着穿戴设备和智能家居的热情不断,app蓝牙的开发也很火热,基于iOS蓝牙的开发资料有不少,但是最最值得学习的必然是apple自家的文档啦,我之前的项目基于蓝牙4.0,开发过程中用到
Core
Bluetooth
框架,算是我学习的笔记吧!涉及到几个部分,我打算分开把他们整理出来,本篇文章通过对Core Bluetooth Programming Guide的翻译,为大家介绍iOS蓝牙4.0编程的一些术语和概念,后续文章将会简单介绍下代码的流程。本人实力有限,了解的深度不是很广,还请各位看官轻点拍砖!

话不多说说,让我们进入正题吧:

注:本文译自Core Bluetooth Programming Guide


核心蓝牙概述

Core Bluetooth
 框架使你的 Mac/iOS app 能够与低功耗蓝牙设备进行通讯。例如,你的app能够搜寻,探索低功耗蓝牙设备,并与之互动,如心率监听器,数字恒温器,甚至能够与其它iOS设备进行交互。

该框架基于BLE4.0规范,直接适用于蓝牙低功率设备的使用。也就是说,该框架隐藏了很多开发规范的底层实现细节,使您更容易开发出与蓝牙低功耗设备进行交互的app。因为该说明中涉及到蓝牙框架的一些概念和术语在本说明中已经被广泛采用,本文将向你介绍这个 
Core
Bluetooth
 框架中的一些关键术语和概念。


Central 和 Peripheral 在蓝牙交互中的角色

所有涉及蓝牙低功耗的交互中有两个主要的角色:中心
Central
和外围设备
Perpheral
。根据一些传统的
客户端-服务端
结构,
Peripheral
通常具有其他设备所需要的数据,而
Central
通常通过使用
Perpheral
的信息来实现一些特定的功能。如下图所示,例如,一个心率监听器可能含有一些有用的信息,你的
Mac/iOS app 可能需要以用户友好的方式显示用户的心率。



Alt text


Central 发现并连接广播中的 Peripheral

Peripheral
向外广播一些广告包形式的数据,广告包是一个相对较小的束,可能包含
Peripheral
提供的有用信息资料,如外设的名称和主要功能。例如,一个数字恒温器可以广告包含其中的一个房间的即时温度。在低功耗蓝牙中,广播是
Peripheral
被获知的主要方式。

从另一方面说,
Central
可以扫描和监听任何对广播内容感兴趣的
Peripheral
。如下图,
Central
可以请求连接任何已对外广播内容的
Peripheral




Alt text


数据在 Peripheral 中如何构成

连接到
Peripheral
的目的是为了对它所提供的数据进行探索和交互。在此之前,理解数据在
Peripheral
中是怎样构成的将会对我们有所帮助。

Peripheral
包含一个或者多个
Service
以及有关其连接信号强度的有用信息。
Service
是指实现一个函数或者功能的设备(或者设备的一部分)的数据采集和相关行为的集合。例如,一个心率监听器的
Service
可能包含从监听心率传感器采集的心率数据。

Service
本身由
Characteristic
或者其他被包含的
Service
所组成。
Characteristic
提供了更多有关
Peripheral
Service
中的详细内容。例如,刚才描述的心率
service
中可以包含一个用来描述该设备的心率传感器所记录身体位置的
characteristic
或者包含发送测量心率数据的
Characteristic
。如下图,表示了一个心率监听器可能包含的
Service
Characteristic




Alt text


Central 在 Peripheral 上的数据探索及交互

Central
成功与
Peripheral
建立连接后,就能发现到
Peripheral
提供的所有的
Service
Characteristic
。(广播数据可能只包含一部分可见的
Service
)

Central
可以通过读取或者写入
Service
Characteristic
value
Peripheral
进行交互。例如,你的
app 可能从数字恒温器上请求当前的室内温度,或者为恒温器提供一个数值以设置室内温度。


Central,Peripherals 以及 Peripheral数据如何表示

有关低功耗蓝牙交互中的主要角色和数据在
Core Bluetooth
中以简单明了的方式表示。


Central 端的对象

当你使用本地
Central
和远程
Peripheral
进行交互,您将在低功耗蓝牙
Central
侧执行操作。除非你是建立一个本地
Peripheral
设备,并使它由一个
Central
端请求响应,大多数的蓝牙交互由
Central
端完成。


本地 Central 和远程 Peripheral

Central
端,本地
Central
设备表示为CBCentralManager。这些对象用来管理发现或连接远程
Peripheral
设备(表示为CBPeripheral),包括扫描,发现和连接广播中的
Peripheral
。如下图所示:



Alt text


远程 Peripheral 数据表示为 CBService 和CBCharacteristic

当你与远程
Peripheral
(表示为
CBPeripheral
)进行数据交互时,你将处理它的
Service
Characteristic
。在
Core
Bluetooth
框架中,远程
Peripheral
Service
表示为
CBService
。相类似的,远程
Peripheral
Service
Characteritic
表示为
CBCharacteristic
。如下图所示:



Alt text


Peripheral 端的对象

OS X v10.9和iOS6以上的Mac/iOS设备能够可以设置成低功耗蓝牙的
Peripheral
,为其他Mac/iPhone/iPad
传输数据。当你设置好你的设备使其能够实现
Peripheral
的角色,你就可以完成低功耗蓝牙交互的
Peripheral
端功能。


本地 Peripheral 和远程 Central

Peripheral
端,一个
Peripheral
设备表示为
CBPeripheralManager


。该对象用于管理那些包含本地
Peripheral
设备的
Service
Characteristic
数据的
Service
,通过广播这些服务的方式发布到远程
Central
设备(表示为
CBCentral
)。
Peripheral
manager
对象同样可以响应远程
Central
的读取和写入请求。如下图所示:



Alt text


本地 Peripheral 数据表示为 CBMutableService 和 CBMutableCharacteristic

当你设置好和本地
Peripheral
(表示为
CBPeripheralManager
)数据交互,就可以处理
Service
Characteristic
的可变版本。在
Core
Bluetooth
框架中,本地
Peripheral
Service
表示为
CBMutableService
。同样地,本地
Peripheral
Service
Characteristic
表示为
CBMutableCharacteristic
。如下图所示:



Alt text
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: