iOS Core Bluetooth_2 基础知识

章节连接

iOS Core Bluetooth_1 概述
iOS Core Bluetooth_2 基础知识
iOS Core Bluetooth_3 用作中央设备的常用方法(1/2)[swift实现]
iOS Core Bluetooth_4 用作中央设备的常用方法(2/2)[swift实现]

写在前面

核心蓝牙框架可让您的iOS和Mac应用程序与低功耗蓝牙设备进行通信。例如,您的应用程序可以发现,探索低能量的外围设备,并与之交互,例如心率监视器,数字恒温器,甚至其他iOS设备。

该框架是用于低能耗设备的蓝牙4.0规范的抽象。就是说,它向开发人员隐藏了规范的许多底层细节,使您更容易开发与蓝牙低功耗设备交互的应用。因为该框架基于规范,所以已经采用了规范中的一些概念和术语。本章向您介绍了开始使用Core Bluetooth框架开发出色应用程序所需的关键术语和概念。

重要提示: 在iOS 10.0或更高版本上链接的iOS应用程序必须在其Info.plist文件中包含使用说明键,以说明需要访问的数据类型,否则它将崩溃。要专门访问蓝牙外围设备数据,它必须包含NSBluetoothPeripheralUsageDescription

1 中央设备与外围设备在蓝牙通信中的角色

所有低功耗蓝牙通信都涉及两个主要参与者:中央和外围设备。基于某种程度上传统的客户端-服务器体系结构,外围设备通常具有其他设备所需的数据。一个中心通常使用由外围设备提供了信息来完成一些特定的任务。正如下图所示,例如,心脏监测仪可能有用的信息,你的Mac或iOS应用可能需要以用户交互的方式显示用户的心脏速率。
在这里插入图片描述

(1) 中央设备发现和链接正在广播的外围设备

外围设备以广播包的形式广播他们拥有的某些数据。一个通告数据包是可以包含哪些外设所提供的信息,如外围设备的名称和主要功能的有用信息数据。例如,数字恒温器可以声明其提供房间的当前温度。在低功耗蓝牙技术中,广播是使外围设备被知道存在的主要方式。

另一方面,中央设备可以扫描和侦听任何正在发布其有用的信息的外围设备,如下图所示。中心可以要求连接到发现广播的任何外围设备。
在这里插入图片描述

(2)外围设备的数据构建

连接到外围设备的目的是开始探索并与其提供的数据进行交互。但是,在执行此操作之前,应当了解外围设备数据的结构。

外围设备可能包含一项或多项服务,或者提供有关其连接信号强度的有用信息。服务是用于实现设备的功能或特征数据和相关联的行为(或该设备的各部分)的集合。例如,心率监视器的一项服务可能是公开来自监视器的心率传感器的心率数据。

服务本身由特征或对其他服务的引用组成。一个特征提供了有关外设的服务进一步的细节。例如,刚刚描述的心率服务可能包含一个描述设备心率传感器的预期身体位置的特征,以及另一个传输心率测量数据的特征。下图说明了心率监测器的服务和特性的一种可能结构。
在这里插入图片描述

(3)中央设备探索并与外围设备进行交互(读或写)

中心成功建立与外围设备的连接后,便可以发现外围设备必须提供的全部服务和特性(广告数据可能只包含一部分可用服务)。

中心还可以通过读取或写入该服务的特性值来与外围设备的服务进行交互。例如,您的应用程序可能从数字恒温器请求当前的室温,或者可能为恒温器提供一个用于设置室温的值。

2 中央设备与外围设备的数据表示

低功耗蓝牙通信中涉及的主要参与者和数据以一种简单,直接的方式映射到Core Bluetooth框架。

(1)用作在中央设备时的对象

当您使用本地中央设备与远程外围设备进行交互时,您正在蓝牙低功耗通信的中央设备上执行操作。除非您设置本地为外围设备(并使用它来响应中央设备的请求),否则您的大部分蓝牙交易都将在中央设备上进行。

  • 本地的中央设备与远程外围设备
    在中央侧,本地中央设备由CBCentralManager对象表示。这些对象用于管理发现或连接的远程外围设备(以CBPeripheral对象表示),包括扫描,发现和连接到广告外围设备。下图显示了如何在Core Bluetooth框架中表示本地中心和远程外围设备。
    在这里插入图片描述
  • 远程外围设备的数据由CBService和CBCharacteristic对象表示
    在与远程外围设备(由CBPeripheral对象表示)上的数据进行交互时,您正在处理其服务和特征。在Core Bluetooth框架中,远程外围设备的服务由CBService对象表示。类似地,远程外围设备的服务特征由CBCharacteristic对象表示。下图说明了远程外围设备的服务和特征的基本结构。
    在这里插入图片描述

(2)用作在外围设备时的对象

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

  • 本地用作外围设备和远程中心
    用作在外围侧,本地外围设备由CBPeripheralManager对象表示。这些对象用于管理本地外围设备的服务和特征数据库中的已发布服务,并将这些服务通告给远程中央设备(由CBCentral对象表示)。外围设备管理器对象还用于响应来自这些远程中心的读取和写入请求。下图显示了如何在Core Bluetooth框架中表示本地外围设备和远程中心。
    在这里插入图片描述
  • 本地用作外围设备的数据由CBMutableService和CBMutableCharacteristic对象表示
    在本地外围设备(由CBPeripheralManager对象表示)上设置数据并与之交互时,您正在处理其服务和特性的可变版本。在Core Bluetooth框架中,本地外围设备的服务由CBMutableService对象表示。同样,本地外围设备的服务特征由CBMutableCharacteristic对象表示。下图说明了本地外围设备的服务和特征的基本结构。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值