CoreBluetooth蓝牙开发(一)

关于蓝牙历史
在蓝牙4.0之前,要使用蓝牙,制定设备必须实现某些蓝牙规范。诸如蓝牙音频耳机、蓝牙立体声耳机、蓝牙远程操控、SIM卡访问等常见用途都有现成的配置文件。但是现在,我们有了蓝牙4.0.因为低功耗的蓝牙使实现定制接口和定制数据交换变得很容易。
目前蓝牙设备现在覆盖生活的很多方面,包括:健康、运动、安全体系(比如车锁、从开门到控制温控器的家庭自动化系统)、点对点游戏等。

需求:基于蓝牙功能结合硬件厂商研发开门系统。实现亮屏开门,蓝牙开门,摇一摇开门等功能的实现。

在使用蓝牙sdk之前,要先了解两个设备:
Central(设备中心)和 Peripheral (外围设备)
按照iOS的说法,服务器叫做外围设备,客户端叫做中心设备。iOS 5允许iOS设备作为客户端从一个蓝牙设备读取数据。
Central和Peripheral是蓝牙应用中两个主要的角色。Peripheral一般拥有其他设备所需要的数据,而Central则会使用Peripheral提供的这些信息来完成一些任务,有点类似计算机网络通信中的C/S结构。例如,心率仪作为一个Peripheral可以向iOS应用提供温度,iOS应用进而通过友好的方式将该数据显示给用户。

CoreBluetooth蓝牙开发(一)_第1张图片
这里写图片描述

根据角色划分不同,Central和Peripheral所做的事也有所区别。Peripheral通过广播数据来向全世界宣布自己的存在,而Central则通过扫描来发现自己感兴趣的Peripheral。一旦Cenral发现自己感兴趣的Peripheral,便会发出连接请求,之后便会和该Peripheral进行交互,而Peripheral则会通过合适的方式来响应请求。
这里写图片描述

开发Central设备应用

如果你要和Peripheral设备进行通信并完成某项任务的话,需要从Central角度出发去开发。

iOS 5允许iOS设备作为客户端从一个蓝牙设备读取数据。
通过CBCentralManager类&CBPeripheral类表示Central设备和Peripheral设备。
iOS6 中,SDK增加了一些类允许iOS设备作为外围设备来发送数据。这些数据可以是一个通知列表、当前播放的音乐曲目、一张照片、或者是你应用中想发送给其他设备的任何东西。
iOS7中 增加了扫描和获取外围设备的同步方法,一个小变化就是中心设备和外围设备的表示服从基于CoreFoudation的CFUUIDRef变为NSUUID.其中重要改进是为后台通过蓝牙通信和发送数据的应用增加了状态保存和恢复功能。

在Core BlueTooth框架中,以CBCentralManager对象表示Central设备,该对象可以管理发现到或者连接到的Peripheral(以CBPeripheral表示)。


CoreBluetooth蓝牙开发(一)_第2张图片
这里写图片描述

通过CBService & CBCharacteristic表示Peripheral数据
当你试图和Peripheral进行交互时,其实就是在和Peripheral提供的Service以及Characteristic交互。顾名思义,CBService和CBCharacteristic就是Core BlueTooth框架中用来描述这两个数据结构的对象。CBPeripheral、CBService、CBCharacteristic是一种从上至下的聚合树形结构。


CoreBluetooth蓝牙开发(一)_第3张图片
这里写图片描述

开发Peripheral服务
1.如果你是要将iPhone或者MacBook作为一个Peripheral的话,你需要从Peripheral角度出发来进行编程。

2.通过CBPeripheralManager & CBCentral表示Peripheral设备和Central设备。

3.CBPeripheralManager用来管理Peripheral的Service&Characteristic数据库中发布的Service,同时负责将这些服务传递给CBCentral。

4.通过CBMutableService & CBMutableCharacteristic表示本地Pheripheral数据

下节我们将正式开始讲解如何利用CoreBluetooth框架在代码中实现蓝牙通信。

蓝牙SDK 是:CoreBluetooth.framework 提供的。

你可能感兴趣的:(CoreBluetooth蓝牙开发(一))