IOS CoreBluetooth系列一:理论
2016-11-16 09:28
363 查看
前言:本文主要对iOS蓝牙4.0编程的一些术语和概念,具体的大家可以看Core
Bluetooth Programming Guide。
该框架基于BLE4.0规范,直接适用于蓝牙低功率设备的使用。也就是说,该框架隐藏了很多开发规范的底层实现细节,使您更容易开发出与蓝牙低功耗设备进行交互的app。因为该说明中涉及到蓝牙框架的一些概念和术语在本说明中已经被广泛采用,本文将向你介绍这个
从另一方面说,
数据在 Peripheral 中如何构成
连接到
而
。该对象用于管理那些包含本地
核心蓝牙概述
Core Bluetooth框架使你的 Mac/iOS app 能够与低功耗蓝牙设备进行通讯。例如,你的app能够搜寻,探索低功耗蓝牙设备,并与之互动,如心率监听器,数字恒温器,甚至能够与其它iOS设备进行交互。
该框架基于BLE4.0规范,直接适用于蓝牙低功率设备的使用。也就是说,该框架隐藏了很多开发规范的底层实现细节,使您更容易开发出与蓝牙低功耗设备进行交互的app。因为该说明中涉及到蓝牙框架的一些概念和术语在本说明中已经被广泛采用,本文将向你介绍这个
Core Bluetooth框架中的一些关键术语和概念。
Central 和 Peripheral 在蓝牙交互中的角色
所有涉及蓝牙低功耗的交互中有两个主要的角色:中心Central和外围设备
Perpheral。根据一些传统的
客户端-服务端结构,
Peripheral通常具有其他设备所需要的数据,而
Central通常通过使用
Perpheral的信息来实现一些特定的功能。如下图所示,例如,一个心率监听器可能含有一些有用的信息,你的 Mac/iOS app 可能需要以用户友好的方式显示用户的心率。
Central 发现并连接广播中的 Peripheral
Peripheral向外广播一些广告包形式的数据,广告包是一个相对较小的束,可能包含
Peripheral提供的有用信息资料,如外设的名称和主要功能。例如,一个数字恒温器可以广告包含其中的一个房间的即时温度。在低功耗蓝牙中,广播是
Peripheral被获知的主要方式。
从另一方面说,
Central可以扫描和监听任何对广播内容感兴趣的
Peripheral。如下图,
Central可以请求连接任何已对外广播内容的
Peripheral。
数据在 Peripheral 中如何构成
连接到
Peripheral的目的是为了对它所提供的数据进行探索和交互。在此之前,理解数据在
Peripheral中是怎样构成的将会对我们有所帮助。
Peripheral包含一个或者多个
Service以及有关其连接信号强度的有用信息。
Service是指实现一个函数或者功能的设备(或者设备的一部分)的数据采集和相关行为的集合。例如,一个心率监听器的
Service可能包含从监听心率传感器采集的心率数据。
而
Service本身由
Characteristic或者其他被包含的
Service所组成。
Characteristic提供了更多有关
Peripheral的
Service中的详细内容。例如,刚才描述的心率
service中可以包含一个用来描述该设备的心率传感器所记录身体位置的
characteristic或者包含发送测量心率数据的
Characteristic。如下图,表示了一个心率监听器可能包含的
Service和
Characteristic。
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。如下图所示:
远程 Peripheral 数据表示为 CBService 和CBCharacteristic
当你与远程Peripheral(表示为
CBPeripheral)进行数据交互时,你将处理它的
Service和
Characteristic。在
Core Bluetooth框架中,远程
Peripheral的
Service表示为
CBService。相类似的,远程
Peripheral中
Service的
Characteritic表示为
CBCharacteristic。如下图所示:
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的读取和写入请求。如下图所示:
本地 Peripheral 数据表示为 CBMutableService 和 CBMutableCharacteristic
当你设置好和本地Peripheral(表示为
CBPeripheralManager)数据交互,就可以处理
Service和
Characteristic的可变版本。在
Core Bluetooth框架中,本地
Peripheral的
Service表示为
CBMutableService。同样地,本地
Peripheral中
Service的
Characteristic表示为
CBMutableCharacteristic。如下图所示:
相关文章推荐
- IOS CoreBluetooth系列三:实战之远程 Central 和本地 Peripheral
- IOS CoreText系列一:理论
- IOS CoreBluetooth系列二:实战之本地 Central 和远程 Peripheral
- IOS CoreBluetooth系列四:一个简单的BlueTooth管理类
- IOS CoreText系列一:理论
- iOS蓝牙框架CoreBluetooth Framework
- iOS CoreBluetooth 教程
- iOS 上的蓝牙框架 - Core Bluetooth for iOS
- iOS CoreBluetooth 教程
- iOS 上的蓝牙框架 - Core Bluetooth for iOS
- iOS Core Animation 简明系列教程
- Core Bluetooth for iOS 6
- iOS 上的蓝牙框架 - Core Bluetooth for iOS
- iOS蓝牙之Introduction to Core Bluetooth: Building a Heart Rate Monitor(翻译)
- iOS 开发系列:CoreData Object 变成 Fault 的一种方式
- iOS 上的蓝牙框架 - Core Bluetooth for iOS
- Core Bluetooth Background Processing for iOS Apps
- iOS 上的蓝牙框架 - Core Bluetooth for iOS
- Core Bluetooth for iOS 6蓝牙技术
- iOS CoreBluetooth 教程