原创翻译:蓝牙(BLE)for iOS

摘要:
关于核心蓝牙简介:核心蓝牙框架提供了iOS和MAC应用程序与BLE设备无线通信所需的类。要确保应用程序运行良好并符合良好规范,请阅读以下章节:iOSApps的核心蓝牙背景处理、与远程外围设备交互的最佳实践以及将本地设备设置为外围设备的最佳实践。如果您正在设计使用蓝牙BLE技术与苹果产品交互的硬件附件,请阅读《苹果产品蓝牙附件设计指南》。如果您的蓝牙附件需要访问iOS设备生成的通知,请阅读AppleNotificationCenterServiceSpecifacaiton。中央、外围和外围数据如何在中央侧本地中央和远程外围上表示对象。本地中央设备由CBCentralManager对象表示。个人端的对象特别提醒,iOS设备和Mac设备只能在OS X10.9和iOS 6中用作BLEpersonal。
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的基本架构。

 

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[XNA3.1游戏]疯狂马里奥(已更新)RequiredFieldValidator 的使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

BLE协议分析

一,Bluetooth Low Energy协议基本组成 蓝牙系统核心架构可分为三个方面: BLE Application和BLE Host 属于应用层API HCI(Host Controller Interface)为中间层 BLE Controller为底层蓝牙芯片 其中在HOST层有的两个比较核心的协议:ATT、GATT 1,ATT(Attrib...

RK61 RGB 蓝牙双模键盘使用说明【转载】

型号 RK61 RGB 蓝牙尺寸 290x100x39mm轴体 机械轴 青/红/茶/黑规格 61全键无冲背光 RGB键帽 双色注塑透光 电压 5v ≤200mA 连接 USB抗干扰线缆 使用说明 ●功能键一览Fn+Q/W/E 可存储/切换三台蓝牙设备 Fn+P 进入蓝牙配对模式 Fn+]} 增加背光亮度Fn+左Ctrl 按键主/副功能切换 Fn+Tab...

Android 蓝牙开发(3)——蓝牙的详细介绍

前面的两篇文章,主要是在 Android 官网关于蓝牙介绍的基础上加上自己的理解完成的。主要针对的是 Android 开发中的一些 API 的使用。 第一篇文章 Android 蓝牙开发(1) 主要是介绍了普通的蓝牙在 Android 开发中的运用。 第二篇文章 Android 蓝牙开发(2) 主要是介绍了低功耗蓝牙的开发。 这篇文章主要介绍的是蓝牙的历史...

蓝牙专题(3)——BLE协议栈(链路层Link Layer)*

链路层位于物理层之上,链路层和物理层一样,都属于BLE协议栈的controller(控制器)部分。 在我查看的文章和书籍上,都是一来就介绍链路层的五种状态,这对于笔者这样理解能力不够又喜欢刨根问底的人来说,无疑是一种折磨,那五种状态和链路层有什么关系,为什么网上各种文章还有书籍都是一来就介绍各种状态之间的转换?好吧,或许是因为BLE核心协议就是这样做的...

Window Services的调试和非托管dll的引用及其他一些注意问题

一个asp.net项目,客户提出需求,需要增加即时短信提醒功能;因为项目中使用到GPRS模块做无线通讯,还可以用作发送短信,就用了这个GPRS模块发短信提醒;这个即时短信提醒功能,计划用window services实现;然后修改表结构,开始window services的代码编写。代码编写完成后,开始调试。测试时才发现,window services测试...

C#调用Axis2发布的带SoapHeader用户验证的WebService

起因:合作公司提供了一个WebService供我调用,为了保证安全性,要求在SoapHeader中带用户名和密码进行校验。 在获取了对方的WSDL文件后,并未在文件中指明SoapHeader的格式以及要传递的用户名、密码的属性名称。按照C#中调用WebService的常规方法,在测试工程中“添加Web引用”或“添加服务引用”,只看到生成的*.discoma...