About Core Bluetooth

简要:核心蓝牙框架提供了iOS和MAC 应用程序与BLE 设备进行无线通信所需要的类。通过该框架,应用程序可以扫描、发现BLE 外设,如心率、电子温度传感器等等,同时可以与之进行交互。 在OSX 10.9 和iOS6 中,你的mac,iOS 设备还可以扮演外设的角色。

  • How to Use This Document

   如果你从来没有使用过Core Bluetooth 框架,或者你对基本的BLE 概念不熟悉的话,那么你可以阅读整篇文档。 在CoreBluetooth Overview 中,你可以了解到你需要知道的关键概念。

在你了解了关键概念之后,你可以阅读Performing Common Central Role Tasks 来学习如何让你的设备扮演中心者的角色。同样的,通过阅读Performing Common Peripheral Role Tasks 来学习开发如何使你的设备扮演外设的角色。

为了确保应用程序运行良好,且遵守好的规范,阅读后面的章节:Core Bluetooth Background Processing for iOS Apps, Best Practices for interacting with a Remote Peripheral Device,  and Best Practice for Setting Up Your Local Device as a Peripheral。

  • See Also

  官方的Bluetooth Special Interst Group (SIG) 网站提供了关于蓝牙低功耗无线传输技术的定义信息。在这里你也可以找到蓝牙4.0 规范。

  如果你正在设计使用蓝牙BLE 技术来与苹果产品进行交互的硬件配件,那么阅读Bluetooth Accessory Design Guidelines for Apple Products. 如果你的蓝牙配件需要访问由iOS 设备产生的Notification,那么阅读Apple Notificaition Center Service (ANCS) Specifacaiton。

一、 Core Bluetooth Overview

  • Central and Peripheral Devices and Their Roles in Bluetooth Communication

  在蓝牙低功率通信中,有两个主要的对象:中心(Central)和外设(Peripheral). 基于传统的客户端-服务器架构,一个外设(Peripheral)有其他设备所需要的数据,而一个中心(Central)则使用由外设提供的信息来实现某些特定的任务。如图1-1所示。

  • Central Discover and Connect to Peripherals That Are Advertising

  Peripherals 用广播包的形式来广播他们拥有的数据。 一个 Advertising packet 是一组包含Peripheral 提供的有用信息很小的数据包,例如Peripheral 的名字,主要服务。举例来讲就是,一个数码温度自动调节器也许广播数据来提供一间房屋的当前温度。

   Central 可以扫描,监听它感兴趣的正在进行广播信息的任意Peripheral 设备,正如图1-2所示。一个Central 可以请求连接它已经发现任意Peripheral.

  • How the Data of a Peripheral is Structured

 外设包含一个或多个Services(服务),以及可以提供有关他们连接信号强度的信息。而一个Servcie(服务)是一组数据和实现一个功能或者设备特性的相关行为的集合。例如,一个心率监测器的一个服务也许是用来发布来自监测器的心率传感器数据的

Service(服务)由Characteristic(特征)和Included Services(内建服务)(这是对其他服务的引用)组成。Characteristic 提供了关于一个外设服务的进一步的详细信息。例如,心率服务可能只是包含一个Characteristic 用来描述心率传感器的在人身体目标部位的位置信息,另一个Characteristic 用来传递心率测量数据。 图1-3 展示了一个心率监测器的Service 和Characteristics 可能的结构:

  • Central Explore and Interacat with the Data on a Peripheral

  在一个Central 已经成功连接到了一个Peripheral之后,它可以发现Peripheral所有的Services 和Characteristics.(发布的数据可能只包含一小部分可以使用的Service)

  一个Central 通过读或者写Service’ Characteristic的value 值来与一个Peripheral的Service进行交互。 例如,应用程序可以从一个数码温度调节器中请求当前房间内的温度,或者它可以提供一个Value 给温度自动调节器来设定房屋内的温度。

  • How Centrals,Peripherals and Peripherals Data are Represented

    •  Ojects on the Central Side
    • Local Centrals and Remote Peripherals

  在Central端的开发,一个本地的Central设备用CBCentralManager 对象来表示。这些对象用来管理被发现的或者已经连接的远程Peripheral 设备(用CBPeripheral对象表示),包括扫描,发现,连接正在广播的Peripherals等操作。图1-4表示了本地Centrals 和远程Peripherals 在CoreBluetooth中的表示。

    • A Remote Peripheral’s Data Are Representd by CBService and CBCharacteristic Objects

  当你正在和远程的Peripheral(用CBPeriheral对象表示)进行交互的时候,你将会处理它的Services 和Characteristics.     在CoreBluetooth 框架中,一个远程的Peripheral服务用CBServicses 对象来表示。同样的,一个远程的Peripheral的Service的Characteristic使用CBCharacteristic对象来表示的。 图1-5表示了远程Peripheral的Services 和Characteristics。

  • Objects on the Peripheral side

  特别提醒的是,在OSX 10.9 和iOS 6中,iOS 设备、Mac 设备才可以作为BLE peripheral。

    • Local Peripherals and Remote Centrals

  在Peripheral端,一个本地的peripheral 设备用CBPeripheralManager对象来表示。这些对象被用来管理在存储在本地Peripheral设备Services和Charactersitics数据库的published services 并且负责向远程的Central 设备(用CBCentral来表示)发布Services. Peripheral Manager 对象也被用来负责响应来自远程Central的读写请求。图1-6展示了本地Peripheral 和远程Central在CoreBluetooth 框架中的表示。

    • A local Periphra’s Data Are Repersented by CBMutableService and CBMutalbeCharacteristic objects

  当你建立并且与一个本地的Peripheral(用CBPeripheralManager表示的对象)进行数据交互的时候,你就会处理它的Services 和Characteristic 的可变版本。在CoreBluetooth框架中,一个本地Peripheral的Service用CBMutableService对象表示。同样的,一个本地的Peripheral的Characteristic用CBMutalbeCharacteristic 对象来表示。图1-7展示了基本的本地Peripheral的Services 和Characteristic的基本架构。

原创翻译:蓝牙(BLE)for iOS的更多相关文章

  1. iOS蓝牙BLE开发

    蓝牙是一个标准的无线通讯协议,具有设备成本低.传输距离近和功耗低等特点,被广泛的应用在多种场合.蓝牙一般分为传统蓝牙和BLE两种模式:传统蓝牙可以传输音频等较大数据量,距离近.功耗相对大:而BLE则用 ...

  2. 蓝牙BLE实用教程

    蓝牙BLE实用教程 Bluetooth BLE 欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Re ...

  3. 蓝牙BLE实用教程(转载)

    欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Ready 和 Smart 以及传统蓝牙之间是什么关 ...

  4. 蓝牙BLE传输性能及延迟分析

    BLE传输性能主要受以下几个因素影响:操作类型,Connection Interval,每个Connection Event内发送的帧数.每一帧数据的长度.具体参见如下链接: https://devz ...

  5. 微信蓝牙BLE接入调试指引 硬件篇

    1 平台框架简介 微信蓝牙BLE由三个模块组成,分别是蓝牙设备.微信和第三方服务器,如下图: 蓝牙设备与微信之间的通信是通过蓝牙GATT协议进行. 微信与第三方服器之间的通信是通过网络http 接口进 ...

  6. 原创开源项目HierarchyViewer for iOS 2.1 Beta新功能介绍

    回顾 HierarchyViewer for iOS是我们发布的一个开源项目,采用GPL v3.0协议. HierarchyViewer for iOS可以帮助iOS应用的开发和测试人员,在没有源代码 ...

  7. 【转】蓝牙ble app开发(三) -- 抓包

    原文网址:http://blog.csdn.net/lckj686/article/details/43156617 关于android 蓝牙app开发抓包的重要性在 android 蓝牙ble ap ...

  8. Android4.3 蓝牙BLE初步

    一.关键概念: Generic Attribute Profile (GATT) 通过BLE连接,读写属性类小数据的Profile通用规范.现在所有的BLE应用Profile都是基于GATT的.   ...

  9. 【转】Android4.3 蓝牙BLE初步

    原文网址:http://www.cnblogs.com/savagemorgan/p/3722657.html 一.关键概念: Generic Attribute Profile (GATT) 通过B ...

随机推荐

  1. CentOS 6.0 图文安装教程

    CentOS 6.0下载地址:wget http://ftp.riken.jp/Linux/centos/6.0/isos/i386/CentOS-6.0-i386-bin-DVD.iso 下边就是安 ...

  2. applicationContext.xml详解 spring+mybatis+struts

    今天给大家详细解释一项关于Spring的applicationContext.xml文件,这对于初学者来说,应该是很有帮助的, 以下是详解Spring的applicationContext.xml文件 ...

  3. ld: symbol dyld_stub_binding_helper not found, normally in crt1.o/dylib1.o/bundle1.o for architecture i386

    就是选择的运行版本太低了,点击项目,project,把iOS DeployMent Target改为比较高的版本就行

  4. win7电脑自动关机怎么设置

    WIN7系统自带了关机工具的,下面是步骤 1.“开始”-右键点击“计算机”选择“管理”,在左侧界面中选择“任务计划程序”. 2.在右侧界面中选择“创建基本任务”(向导式创建任务,推荐新手使用)或者“创 ...

  5. Delphi 记事本 TMemo(5篇)

    模仿的很不错,在本质上与windows记事本使用了同一个Edit. http://www.cnblogs.com/xe2011/category/524758.htmlhttp://www.cnblo ...

  6. Guava的一些总结

    guava是java API蛋糕上的冰激凌(精华). 源码包的简单说明:  com.google.common.annotations:普通注解类型.  com.google.common.base: ...

  7. 使用m2eclipse搭建Web项目

    这篇文章已经指导好了:http://www.cnblogs.com/quanyongan/archive/2013/04/21/3033838.html

  8. wcf 请考虑增加操作超时

    发送到 net.tcp://192.168.1.18:8732/CallbackService 的请求操作在配置的超时(00:00:59.9879994)内未收到回复. 分配给此操作的时间可能已经是更 ...

  9. Tcxtreelist动态控制列或行是否能够编辑

    procedure Tfrmaaa.grd1Editing(Sender: TObject; AColumn: TcxTreeListColumn; var Allow: Boolean);begin ...

  10. main函数的3个参数

    最早是在MCU中使用C语言,MCU中的main函数没有参数. 后来在PC上面使用C语言,一般教程都写的是main函数有2个参数: int main(int argc, const char **arg ...