Core Bluetooth框架概述

Core Bluetooth框架可让您的iOS和Mac应用程序与蓝牙低功耗设备进行通信。例如,您的应用可以发现,探索并与低能量外围设备(如心率监测器,数字恒温器,甚至其他iOS设备)交互。
该框架是蓝牙4.0规范的抽象,用于低能耗设备。也就是说,它隐藏了开发人员的许多低规格细节,使您更容易开发与蓝牙低功耗设备交互的应用程序。由于该框架基于规范,因此已采用规范中的一些概念和术语。本章向您介绍使用Core Bluetooth框架开始开发优秀应用程序时需要了解的关键术语和概念。

重要提示: 在iOS 10.0或之后链接的iOS应用必须在其Info.plist文件中包含它需要访问的数据类型的使用说明密钥,否则将会崩溃。要专门访问蓝牙外设数据,它必须包含 NSBluetoothPeripheralUsageDescription

中央(central)和外围(peripheral)设备及其在蓝牙通信中的角色

所有蓝牙低功耗通信都涉及两个主要参与者:centralperipheral设备。基于某种传统的客户端(central) - 服务器(peripheral)架构,外设通常具有其他设备所需的数据。一个中心通常使用由外围设备提供了信息来完成一些特定的任务。正如图1-1所示,例如,心脏监测仪可能有用的信息,你的Mac或iOS应用可能需要以显示在用户友好的方式在用户的心脏速率。

1-1

中心设备发现并连接到广播的外围设备

外围设备以广播数据包的形式广播其中的一些数据。一个广播包是数据的一个相对较小的包可能包含什么外设所提供的,如外围设备的名称和主要功能的有用信息。例如,数字恒温器可以宣传它提供房间的当前温度。在低能耗蓝牙中,广播是外围设备使其存在已知的主要方式。

另一方面,中央设备可以扫描并聆听任何正在发布感兴趣信息的外围设备,如图1-2所示。中央设备可以要求连接到已发现广播的任何外围设备


1-2.png

外围设备的数据是如何结构化的

连接到外设的目的是开始探索并与其提供的数据进行交互。然而,在你做到这一点之前,它有助于理解外设数据的结构。
外设可能包含一项或多项服务或提供有关其连接信号强度的有用信息。一个服务是用于实现设备的功能或特征数据和相关联的行为(或该设备的各部分)的集合。例如,心率监测仪的一项服务可能是显示来自监护仪的心率传感器的心率数据。
服务本身由特征或包含的服务组成(即引用其他服务)。一个特征提供了有关外设服务的更多细节。例如,刚刚描述的心率服务可以包含描述设备的心率传感器的预期身体位置的一个特征以及传输心率测量数据的另一个特征。图1-3显示了心率监测仪服务和特性的一种可能结构。


1-3

中心设备探索并与外围设备数据进行交互

中央成功建立与外设的连接后,它可以发现外设必须提供的全部服务和特性(广播数据可能只包含部分可用服务)。
中央设备还可以通过读取或写入该服务特征的值来与外设的服务进行交互。例如,您的应用可能会从数字恒温器请求当前房间温度,或者它可能会向恒温器提供设定房间温度的值。

中央处理器,外设和外围数据如何表示

涉及蓝牙低能量通信的主要参与者和数据以简单直接的方式映射到Core Bluetooth框架。

本地的中心设备和远程外设

在中央侧,本地中央设备由CBCentralManager对象表示。这些对象用于管理发现或连接的远程外围设备(以CBPeripheral对象表示),包括扫描,发现和连接到广播外设。图1-4显示了本地中央处理器和远程外围设备在Core Bluetooth框架中的表现。

1-4

外围设备的数据由CBService和CBCharacteristic对象表示

当您与远程外围设备(由CBPeripheral对象表示)交互数据时,您正在处理其服务和特征。在核心蓝牙框架中,远程外设的服务由CBService对象表示。类似地,远程外围设备的服务特性由CBCharacteristic对象表示。图1-5说明了外围设备的服务和特性的基本结构

1-5.png

在外围设备端

从macOS 10.9和iOS 6开始,Mac和iOS设备可以用作蓝牙低功耗外设,为其他设备(包括其他Mac,iPhone和iPad设备)提供数据。当设置您的设备以实现外设角色时,您正在蓝牙低功耗通信的外围设备上执行操作。

本地外围设备和远程中心设备

在外围设备上,本地外围设备由CBPeripheralManager对象表示。这些对象用于管理本地外围设备的服务和特征数据库中的已发布服务,并将这些服务通告给远程中央设备(由CBCentral对象表示)。外设管理器对象也用于响应来自这些远程中心的读取和写入请求。图1-6显示了本地外围设备和远程中心如何在Core Bluetooth框架中表现出来。

1-6.png

本地外设的数据由CBMutableService和CBMutableCharacteristic对象表示

当您设置本地外围设备(由CBPeripheralManager对象表示)并与其交互时,您正在处理其服务和特性的可变版本。在核心蓝牙框架中,本地外围设备的服务由CBMutableService对象表示。同样,本地外设服务的特征由CBMutableCharacteristic对象表示。图1-7说明了本地外设的服务和特性的基本结构。

1-7.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容