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开发-全面解析iOS蓝牙BLE4.0开发

只要你会OC基础,会写HelloWorld,你就可以实现iOS的蓝牙通信功能,实现蓝牙小项目也不在话下,作者会带领大家详细分析BLE4.0原理,通过分析xcode使用的蓝牙API,让学者能够得心应手的实现蓝牙BLE4.0的开发
  • 2017年03月24日 13:36

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

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

iOS之蓝牙开发—CoreBluetooth详解一

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

iOS开发之玩转蓝牙CoreBluetooth

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

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

在这一讲中,我们将学习如何开发Central蓝牙应用,包括: 建立Central管理模块CBCentralManager 发现和连接正在广播对Peripheral 在和Peripheral建立连接后获...
  • wangchi718
  • wangchi718
  • 2015-06-28 00:32:26
  • 982

小米手环iOS开发实战(一):iOS蓝牙框架CoreBluetooth

小米手环iOS开发实战(一):iOS蓝牙框架CoreBluetooth本项目为对小米手环进行二次开发,利用了小米手环蓝牙连接并不安全的特性,连接后可以获取手环数据,并可修改数据。 本实例使用Swif...
  • b735098742
  • b735098742
  • 2017-06-08 11:59:00
  • 3770

iOS蓝牙框架CoreBluetooth应用

前一段时间做一个iPhone端通过蓝牙与血压计交互的软件,类似于天天血压这款软件的功能。在此带来了关于蓝牙的一些分享! 1、外设 外设就是一台向外发送信息的设备,它以广播的形势进行消息的发送,...
  • applexiaozhu
  • applexiaozhu
  • 2016-09-21 16:42:47
  • 743

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

服务器端 头文件 #import #import  @interface ViewController : UIViewController @property (stro...
  • w8561469
  • w8561469
  • 2015-06-18 14:52:16
  • 1712

iOS开发- 蓝牙后台接收数据(BLE4.0)

最近在做一个蓝牙相关的项目, 需要在应用进入后台, 或者手机属于锁屏状态的情况下, 仍然保持蓝牙连接, 并且能正常接收数据。本来以后会很麻烦, 但是学习了下..发现就2步而已。简单的不能再简单了。好了...
  • hitwhylz
  • hitwhylz
  • 2014-06-05 19:35:15
  • 24706

iOS之蓝牙开发—CoreBluetooth详解二

这里主要向大家简单地讲解一下的通过中心设备对外设硬件进行数据的写入和反馈消息的获取。 在进行讲解之前,我们需要明白以下几点: 1.查看特征的属性: typedef NS_OPTIONS(NSUInt...
  • wuzesong
  • wuzesong
  • 2016-05-03 10:20:44
  • 1249
收藏助手
不良信息举报
您举报文章:iOS开发——CoreBluetooth蓝牙开发(二)
举报原因:
原因补充:

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