Core Bluetooth Overview
Core Bluetooth framework 让你的iOS和MAC app与Bluetooth低能量设备通信。例如:你的app能发现,探索,和低能量的peripheral devices交互,例如心率监测器,数码恒温器,和其他的iOS设备。
这个framework是低能量设备的一个抽象的Bluetooth 4.0规范。它隐藏了许多低等级细节规范,对于开发者,使它更容易开发与Bluetooth 低能量设备交互的app。因为framework是基于这个规范,一些概念和术语的规范已经采用了。本章向您介绍关键术语和概念,你需要知道开始开发app使用蓝牙核心框架。
重点
一个iOS app链接在iOS10.0之后必须在Info.plist包括使用描述key为这个数据类型,否则它将崩溃。获取蓝牙外围设备数据规定,它必须包括 NSBluetoothPeripheralUsageDescription.
Central and Peripheral Devices and Their Roles in Bluetooth Communication
有两个主要的玩家在所有的蓝牙低能量通信涉及:central 和 peripheral。基于一个传统的 client-server 架构,一个peripheral通常有其他设备需要的数据。一个central 通常使用peripheral 提供的信息完成一些特定的任务。例如图一演示,一个心率监测大概有有利的信息对于在你的Mac或者iOS app为了需要友好方式显示用户的心率
Centrals Discover and Connect to Peripherals That Are Advertising
peripherals 广播的数据与他们的广告包。广告包是一个相对较小的包的数据可能包含有用的信息关于一个peripheral提供,如peripheral的名称和主要功能。例如,数码恒温器可能广播,它提供了当前房间的温度。蓝牙低能量,广播的主要方式是peripherals把他们展现的淋漓尽致。
a central,另一方面,可以扫描和监听任何oeripheral device感兴趣的广播信息,如图1 - 2所示。a central 可以要求连接到它有发现广播的任何peripheral.
How the Data of a Peripheral Is Structured
连接到peripheral的目的是开始探索和与它提供的数据交互。之前,你可以这样做,但是,它有助于了解peripheral的数据结构。
peripheral可能包含一个或多个services或提供有用的信息关于他们的连接信号强度。一个service是一个集合的数据和为完成一个功能或特性的设备(或部分设备)相关行为。例如,心率监视器的一个service可能是从监测心率的传感器来的公开的心率数据。
服务本身是由特征或包括服务(即引用其他服务)。一个characteristic提供了更深次的细节关于peripheral’s service。例如,刚刚描述的心率service可能包含一个characteristic目的是描述在设备心率传感器的的身体位置和其他的charactoristic传输心率测量数据。图1 - 3显示了一个可能的心率监测器的服务的结构和特点。
Centrals Explore and Interact with the Data on a Peripheral
一个central 已经成功连接到一个peripheral之后,它能发现这个peripheral已经提供的全部的services和characteristics (广播数据可能包含仅仅一部分可获得的services).
a central 也能通过读取和写入services’s characteristic的值和peripheral 交互。例如,你的app大概需要从数码恒温计中请求当前房间的温度,或者它大概提供一个温度值作为当前房间的温度。
How Centrals, Peripherals, and Peripheral Data Are Represented
参与蓝牙低能量的主要参与者和数据通信是映射到蓝牙核心框架在一个简单的、直接的方法。
Objects on the Central Side
当你使用一个本地的central和一个远程的peripheral交互的时候,你在central side 为Bluetooth低能量通信执行行为。除非你搭建一个本地的peripheral device,和使用它去响应请求通过一个central,大多数你的Bluetooth 交易将在central side。
关于如何在你的app实现central 角色,看之后的第三部分和第六部分
Local Centrals and Remote Peripherals
在central side,一个本地的central设备代表一个CBCentralManager对象。这个对象可以发现或者连接远程peripheral devices(代表CBPeripheral 对象),包括扫描,发现,和连接到广播peripherals.图1-4演示了本地的central 和远程 peripherals是代表在Core Bluetooth framework.
A Remote Peripheral’s Data Are Represented by CBService and CBCharacteristic Objects
当你是和一个远程peripherals设备交互数据的时候,你需要处理它的services和chatacteristics。在Core Bluetooth framework,一个远程peripherals’s service代表一个CBService对象,类似的,一个远程peripherals’s chatacteristic代表一个CBCharacteristic对象。图1-5演示了一个远程peripheral的基本结构
Objects on the Peripheral Side
作为macOS10.9和iOS6,Mac和iOS设备可以作为蓝牙低能量的peripherals,服务数据到其他设备,包括其他Mac,iPhone和iPad设备。当设置你的设备来实现peripheral角色,您正在执行行动在peripheral side做蓝牙低能量通信
Local Peripherals and Remote Centrals
在peripheral端,一个本地的peripheral设备代表CBPeripheralManager对象。这个对象用于管理发布服务在本地peripheral设备的数据库内的services和chatacteristics,广播这些services到远程central设备(代表CBCentral对象)。peripheral 管理对象也被用来响应这些远程centrals读写请求。图1-6演示本地peripheral和远程central如何在蓝牙核心框架。
A Local Peripheral’s Data Are Represented by CBMutableService and CBMutableCharacteristic Objects
当你在一个本地peripheral搭建和交互数据,你需要处理可变的版本的services和characteristics。在Core Bluetooth framework,在本地的peripheral的services代表一个CBMutableService对象,类似的,在本地的peripheral的chatateristics代表一个CBMutableChatacteristic对象。图1-7演示了本地的peripheral的services和chatacteristics的基本结构。
关于更多搭建本地设备实现peripheral 角色的信息,看之后的第三部分和第六部分