【译】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
相关文章推荐
- iOS开发CocoaPods使用详细说明
- iOS学习笔记23-音效与音乐
- SDWebImage源码解析(二)
- iOS打包ipa的几种方式
- iOS学习笔记23-音效与音乐
- iOS 7.1 安装 企业应用 提示 无法下载应用程序
- iOS开发web加载HTML方法
- iOS开发 AFNetworking 3.0使用遇到的问题补充
- iOS开发之AFNetworking 3.0.4使用
- 关于iOS开发中info.plist文件的解读
- iosiPhone屏幕尺寸、分辨率及适配
- 解决 iOS View Controller Push/Pop 时的黑影
- iOS 常见错误以及错误分析解决
- ios多语言适配
- NSUserDefaults 的坑知道吗?
- iOS 弹出一个透明的控制器
- iOS:插件制作入门
- ios 内购开发,passbook,蓝牙
- IOS三种归档(NSKeyArchieve)的总结
- ios如何实现静音模式下声音仍然可以外放