iOS开发——CoreBluetooth蓝牙开发(二)

翻译 2015年06月27日 21:17:00

前面一讲iOS开发——CoreBluetooth蓝牙开发(一)中,我们已经知道了Core BlueTooth的两个重要角色CentralPeripheral。这一讲我们来进一步地、更加具体地来探讨这两个角色之间是如何进行通信的,包括数据组成和数据结构等内容。

Peripheral的数据结构

在研究某个协议的时候,了解通信所使用的数据结构十分重要。Peripheral往往都会有一到几个Service(服务)来提供连接信号强度的信息。这里所说的服务是为完成设备某项功能的一系列数据集合或相关行为。例如,心率仪的一项服务就是将心率传感器的数据曝露出来。

Service本身又是由Characteristics或者是其他Service嵌套构成,其他Service一般用引用来表示。例如,一个心率仪Service的可能结构如下图所示。其中一个Characteristic用来记录心率值,另外一个用来记录感应器的位置信息。

这里写图片描述

一旦Central和Peripheral建立了连接,它就能发现所有该Peripheral提供的所有Service和Characteristic(广播数据可能只包含Service中的一部分)。Central就是通过读写这些Service中的Characteristic来实现与Peripheral的交互的,例如你的苹果设备可以从温度计那里读取到当前室内的温度,也可以像温度计写入一个温度值来控制当前室内温度。

Central、Peripheral & Peripheral数据的代码表示形式

说了这么多,最终还是要回归代码,还是要知道该怎么运用苹果提供的Core BlueTooth Framework来实现自己的蓝牙App,下面我们就来看看上面的这些概念是如何映射到该框架中去的。

开发Central设备应用

如果你要和Peripheral设备进行通信并完成某项任务的话,需要从Central角度出发去开发。

通过CBCentralManager&CBPeripheral表示Central设备和Peripheral设备

在Core BlueTooth框架中,以CBCentralManager对象表示Central设备,该对象可以管理发现到或者连接到的Peripheral(以CBPeripheral表示)。

这里写图片描述

通过CBService & CBCharacteristic表示Peripheral数据

当你试图和Peripheral进行交互时,其实就是在和Peripheral提供的Service以及Characteristic交互。顾名思义,CBService和CBCharacteristic就是Core BlueTooth框架中用来描述这两个数据结构的对象。CBPeripheral、CBService、CBCharacteristic是一种从上至下的聚合树形结构。

这里写图片描述

开发Peripheral服务

如果你是要将iPhone或者MacBook作为一个Peripheral的话,你需要从Peripheral角度出发来进行编程。

通过CBPeripheralManager & CBCentral表示Peripheral设备和Central设备

CBPeripheralManager用来管理Peripheral的Service&Characteristic数据库中发布的Service,同时负责将这些服务传递给CBCentral。

通过CBMutableService & CBMutableCharacteristic表示本地Pheripheral数据

和前面所说的类似,这里不再赘述。

下节我们将正式开始讲解如何利用CoreBluetooth框架在代码中实现蓝牙通信。
(未完待续)

iOS之蓝牙开发—CoreBluetooth详解一

最近开始进行蓝牙模块的开发,下载一个名叫lightBlue的app,通过它可以扫描到周围开启的外部设别,并且可以进行连接,连接外部设备成功之后,就可以看到外部设别的相关信息,包含服务和特征的所有相关的...
  • wuzesong
  • wuzesong
  • 2016年03月18日 16:25
  • 2892

iOS coreBluetooth编程中需要注意的问题

iOS 设备作为中心设备(central device)时需要注意:(1)一定要对central Manager保持强引用,也就是说central Manager需要是一个全局变量不能是局部变量,否则...
  • ohyeahhhh
  • ohyeahhhh
  • 2016年08月10日 19:01
  • 2092

自己写的IOS 蓝牙连接demo 用的是coreBluetooth

服务器端 头文件 #import #import  @interface ViewController : UIViewController @property (stro...
  • w8561469
  • w8561469
  • 2015年06月18日 14:52
  • 1653

浅谈iOS中的蓝牙技术(二) -- CoreBluetooth

在上篇文章中我们提到了 iOS 开发中,使用GameKit 框架实现相同网络的 iOS 设备之间传输数据.但是 GameKit 框架在 iOS7 之后就过时了,那么本文将介绍另一种关于蓝牙的框架 Co...
  • qq_30513483
  • qq_30513483
  • 2016年04月28日 10:09
  • 3788

【iOS】CoreBluetooth5 作为 Central 时的数据读写(OTA 固件升级与文件传输)

【iOS】CoreBluetooth5 作为 Central 时的数据读写(OTA 固件升级与文件传输)  Saitjr  三月 23, 2016  Ios  No Comments...
  • xiong1081
  • xiong1081
  • 2016年06月30日 11:18
  • 1233

iOS之蓝牙开发—CoreBluetooth详解二

这里主要向大家简单地讲解一下的通过中心设备对外设硬件进行数据的写入和反馈消息的获取。 在进行讲解之前,我们需要明白以下几点: 1.查看特征的属性: typedef NS_OPTIONS(NSUInt...
  • wuzesong
  • wuzesong
  • 2016年05月03日 10:20
  • 1166

iOS 开发——CoreBluetooth蓝牙开发(一)

最近要做关于iOS上的蓝牙开发项目,为此阅读了苹果的官方文档,这里做一些翻译和摘录和大家共享交流。...
  • wangchi718
  • wangchi718
  • 2015年06月27日 19:10
  • 529

基于蓝牙4.0(btle)的简单通讯流程

初始化一个CentralManager 在iOS10以后,需要在 Info.plist 文件里面设置 NSBluetoothPeripheralUsageDescription 字段,添加访问蓝牙权...
  • hejiasu
  • hejiasu
  • 2017年06月19日 21:23
  • 2118

iOS开发之玩转蓝牙CoreBluetooth

之前详细谈过不少关于HTTP协议的知识点,TCP/IP也通过tcpdump做过简单的介绍,但网络协议的本质其实是连接,设备或者端之间连接的方式有多种,常见的http或者基于tcp的socket只是森林...
  • xiaobo0134
  • xiaobo0134
  • 2016年11月01日 11:22
  • 470

iOS开发——CoreBluetooth蓝牙开发(三)

在这一讲中,我们将学习如何开发Central蓝牙应用,包括: 建立Central管理模块CBCentralManager 发现和连接正在广播对Peripheral 在和Peripheral建立连接后获...
  • wangchi718
  • wangchi718
  • 2015年06月28日 00:32
  • 935
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS开发——CoreBluetooth蓝牙开发(二)
举报原因:
原因补充:

(最多只允许输入30个字)