美文网首页墨狂之逸才iOS活在数码中
【译】iOS蓝牙编程指南 -- 核心蓝牙概述

【译】iOS蓝牙编程指南 -- 核心蓝牙概述

作者: MarkLin | 来源:发表于2014-12-09 23:48 被阅读10232次

    小引

    随着穿戴设备和智能家居的热情不断,app蓝牙的开发也很火热,基于iOS蓝牙的开发资料有不少,但是最最值得学习的必然是apple自家的文档啦,我之前的项目基于蓝牙4.0,开发过程中用到Core Bluetooth框架,算是我学习的笔记吧!涉及到几个部分,我打算分开把他们整理出来,本篇文章通过对Core Bluetooth Programming Guide的翻译,为大家介绍iOS蓝牙4.0编程的一些术语和概念,后续文章将会简单介绍下代码的流程。本人实力有限,了解的深度不是很广,还请各位看官轻点拍砖!

    话不多说说,让我们进入正题吧:

    注:本文译自Core Bluetooth Programming Guide

    核心蓝牙概述

    Core Bluetooth 框架使你的 Mac/iOS app 能够与低功耗蓝牙设备进行通讯。例如,你的app能够搜寻,探索低功耗蓝牙设备,并与之互动,如心率监听器,数字恒温器,甚至能够与其它iOS设备进行交互。

    该框架基于BLE4.0规范,直接适用于蓝牙低功率设备的使用。也就是说,该框架隐藏了很多开发规范的底层实现细节,使您更容易开发出与蓝牙低功耗设备进行交互的app。因为该说明中涉及到蓝牙框架的一些概念和术语在本说明中已经被广泛采用,本文将向你介绍这个 Core Bluetooth 框架中的一些关键术语和概念。

    Central 和 Peripheral 在蓝牙交互中的角色

    所有涉及蓝牙低功耗的交互中有两个主要的角色:中心Central和外围设备Perpheral。根据一些传统的客户端-服务端结构,Peripheral通常具有其他设备所需要的数据,而Central通常通过使用Perpheral的信息来实现一些特定的功能。如下图所示,例如,一个心率监听器可能含有一些有用的信息,你的 Mac/iOS app 可能需要以用户友好的方式显示用户的心率。

    Alt text

    Central 发现并连接广播中的 Peripheral

    Peripheral向外广播一些广告包形式的数据,广告包是一个相对较小的束,可能包含Peripheral提供的有用信息资料,如外设的名称和主要功能。例如,一个数字恒温器可以广告包含其中的一个房间的即时温度。在低功耗蓝牙中,广播是Peripheral被获知的主要方式。

    从另一方面说,Central可以扫描和监听任何对广播内容感兴趣的Peripheral。如下图,Central可以请求连接任何已对外广播内容的Peripheral

    Alt text

    数据在 Peripheral 中如何构成

    连接到Peripheral的目的是为了对它所提供的数据进行探索和交互。在此之前,理解数据在Peripheral中是怎样构成的将会对我们有所帮助。

    Peripheral包含一个或者多个Service以及有关其连接信号强度的有用信息。Service是指实现一个函数或者功能的设备(或者设备的一部分)的数据采集和相关行为的集合。例如,一个心率监听器的Service可能包含从监听心率传感器采集的心率数据。

    Service本身由Characteristic或者其他被包含的Service所组成。Characteristic提供了更多有关PeripheralService中的详细内容。例如,刚才描述的心率service中可以包含一个用来描述该设备的心率传感器所记录身体位置的characteristic或者包含发送测量心率数据的Characteristic。如下图,表示了一个心率监听器可能包含的ServiceCharacteristic

    Alt text

    Central 在 Peripheral 上的数据探索及交互

    Central成功与Peripheral建立连接后,就能发现到Peripheral提供的所有的ServiceCharacteristic。(广播数据可能只包含一部分可见的Service)

    Central可以通过读取或者写入ServiceCharacteristicvaluePeripheral进行交互。例如,你的 app 可能从数字恒温器上请求当前的室内温度,或者为恒温器提供一个数值以设置室内温度。

    Central,Peripherals 以及 Peripheral数据如何表示

    有关低功耗蓝牙交互中的主要角色和数据在Core Bluetooth中以简单明了的方式表示。

    Central 端的对象

    当你使用本地Central和远程Peripheral进行交互,您将在低功耗蓝牙Central侧执行操作。除非你是建立一个本地Peripheral设备,并使它由一个Central端请求响应,大多数的蓝牙交互由Central端完成。

    本地 Central 和远程 Peripheral

    Central端,本地Central设备表示为CBCentralManager。这些对象用来管理发现或连接远程Peripheral设备(表示为CBPeripheral),包括扫描,发现和连接广播中的Peripheral。如下图所示:

    Alt text

    远程 Peripheral 数据表示为 CBService 和CBCharacteristic

    当你与远程Peripheral(表示为CBPeripheral)进行数据交互时,你将处理它的ServiceCharacteristic。在Core Bluetooth框架中,远程PeripheralService表示为CBService。相类似的,远程PeripheralServiceCharacteritic表示为CBCharacteristic。如下图所示:

    Alt text

    Peripheral 端的对象

    OS X v10.9和iOS6以上的Mac/iOS设备能够可以设置成低功耗蓝牙的Peripheral,为其他Mac/iPhone/iPad 传输数据。当你设置好你的设备使其能够实现Peripheral的角色,你就可以完成低功耗蓝牙交互的Peripheral端功能。

    本地 Peripheral 和远程 Central

    Peripheral端,一个Peripheral设备表示为CBPeripheralManager
    。该对象用于管理那些包含本地Peripheral设备的ServiceCharacteristic数据的Service,通过广播这些服务的方式发布到远程Central设备(表示为CBCentral)。Peripheral manager对象同样可以响应远程Central的读取和写入请求。如下图所示:

    Alt text

    本地 Peripheral 数据表示为 CBMutableService 和 CBMutableCharacteristic

    当你设置好和本地Peripheral(表示为CBPeripheralManager)数据交互,就可以处理ServiceCharacteristic的可变版本。在Core Bluetooth框架中,本地PeripheralService表示为CBMutableService。同样地,本地PeripheralServiceCharacteristic表示为CBMutableCharacteristic。如下图所示:

    Alt text

    相关文章

      网友评论

      • wokenshin:好文章 感谢分享!
      • d19c1fdacbf2:大神,你好,请问你开发蓝牙时候有没有遇到在iPhone 6 和iPhone 6 Plus上无法使用的问题?具体描述就是:开机后第一次打开蓝牙,使用正常,如果把蓝牙关掉在打开,就无法使用!必须重启手机才可以?我试了lightblue这个APP,也是一样的问题。这个问题该你遇到过吗?
        d19c1fdacbf2:@MarkLin 只有部分iphone 6 和 iPhone 6 Plus 出现过这种情况,系统都是最新的10.2.1,其他设备都没遇到过,看来就我遇到这个坑了
        MarkLin:@Drunkard 并没有遇到过。。。所有手机都试过会发生同样情况吗?有可能是外设程序的问题
      • ONE2:谢谢分享
      • ef344ccd72b8:请继续翻译关于蓝牙的后续文档.
      • 7f56a349199c:我现在在研究手机连接手表,交互数据,你有demo吗?
      • Han夜:为什么我看不到全文?
        02f1e6079dad:希望也可发给我。461630170@qq.com,多谢!
        Han夜:你好,可以把全文发给我嘛,非常感谢,573544241@qq.com
        MarkLin:@c3f789b8a9ee 这个应该是全文。
      • Han夜:你好 ,有木有完整的翻译?谢谢。
        8d1973adf9a1:@c3f789b8a9ee 我刚开始弄APP控制音箱播放器 请问你那deom参考下嘛 谢谢
        Han夜:@MarkLin 你好,我现在在弄手机APP控制蓝牙音箱播放音乐,你有木有接触过OZN。
        MarkLin:@c3f789b8a9ee 可以一起交流
      • MarkLin:@lufir 希望对你有帮助!
      • HYY:多谢了,很实用,也很好的翻译

      本文标题:【译】iOS蓝牙编程指南 -- 核心蓝牙概述

      本文链接:https://www.haomeiwen.com/subject/jyentttx.html