【iOS】CoreBluetooth1 初识

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

【iOS】CoreBluetooth1 初识

原文:http://www.saitjr.com/ios/core-bluetooth-overview.html

公司做玩具的,很多地方需要和硬件通信,这个项目用到的是蓝牙,先开一个坑,以后再继续介绍其他的通信方式。

因为自己是渣,所以就从渣的角度来谈谈 Core Bluetooth 吧。

环境信息:
Mac OS X 10.11.3
iOS 9.2.1
Xcode 7.2.1
Bluetooth 4.0

正文

因为是按照 API 的流程来学习的,所以还是按照 API 的顺序来写吧。文档链接:

https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/AboutCoreBluetooth/Introduction.html#//apple_ref/doc/uid/TP40013257-CH1-SW1

当然,2013年的 WWDC 也讲到了 Core Bluetooth,更早期虽然也讲到了,但是并不建议去学习 API,因为 iOS9 真是弃用了一堆方法啊。WWDC 视频地址:

https://developer.apple.com/videos/play/wwdc2013/703/

在看完整个官方文档之后,受益匪浅,这个系列的其他文章列表:

CoreBluetooth2 作为 Central 时的数据读写


CoreBluetooth3 作为 Central 时的数据读写(补充)


CoreBluetooth4 作为 Central 时的数据读写(最佳实践)


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


CoreBluetooth6 作为 Peripheral 时的请求响应


CoreBluetooth7 作为 Peripheral 时的请求响应(最佳实践)


CoreBluetooth8 后台运行蓝牙服务

Overview

随着可穿戴设备的普及,蓝牙通信也用得越来越多了。常常谈到的 BLE 技术则是 Bluetooth Low Energy 的简称(见名知意…

central 与 peripheral

蓝牙通信中,首先需要提到的就是 central 和 peripheral 两个概念。这是设备在通信过程中扮演的两种角色。直译过来就是 [中心] 和 [周边(可以理解为外设)] 。iOS 设备既可以作为 central,也可以作为 peripheral,这主要取决于通信需求。官方 API 上举的例子能很容易的帮助我们理解这两个角色。

在和心率监测仪通信的过程中,监测仪作为 peripheral,iOS 设备作为 central。区分的方式即是这两个角色的重要特点:提供数据的是谁,谁就是 peripheral;需要数据的是谁,谁就是 central。就像是 client 和 server 之间的关系一样。

那怎么发现 peripheral 呢?

在 BLE 中,最常见的就是广播。实际上,peripheral 在不停的发送广播,希望被 central 找到。广播的信息中包含它的名字等信息。如果是一个温度调节器,那么广播的信息应该还会包含当前温度什么的。

那么 central 的作用则是去 scan,找到需要连接的 peripheral,连接后便可进行通信了。

peripheral 数据构成

虽然是说通信,但是苹果还是很贴心的先讲解了 peripheral 的基本构成。因为后面很多的用法都涉及到这个构成,毕竟苹果的命名规范就是已长著称的不是吗。所以,如果了解了构成,那后面的类名真是很容易明白(这也是我不翻译关键词的原因)。

一个 peripheral 包含一个或多个 service ,或提供关于信号强度的信息。service 是数据和相关行为的集合。例如,一个心率监测仪的数据就可能是心率数据。

service 本身又是由 characteristic 或者其他 service 组成的。characteristic 又提供了更为详细的 service 信息。还是以心率监测仪为例,service 可能会包含两个 characteristic,一个描述当前心率带的位置,一个描述当前心率的数据。

相关类

当 central 成功连上 peripheral 后,它便可以获取 peripheral 提供的所有 service 和 characteristic。通过对 characteristic 的数据进行读写,便可以实现 central 和 peripheral 的通信。

设备作为 central 时

当 central 和作为外设的 peripheral 通信时,绝大部分操作都在 central 这边。此时,central 被描述为CBCentralManager,这个类提供了扫描、寻找、连接 peripheral (被描述为CBPeripheral)的方法。

下图标示了 central 和 peripheral 在 Core Bluetooth 中的表示方式:

当你操作 peripheral 的时候,实际上是在和它的 service 和 characteristic 打交道,这两个分别由CBServiceCBCharacteristic表示。

一个 peripheral 包含多个 service,而一个 service 又可以包含多个 characteristic,所以他们的关系大致可以表示为:

设备作为 Peripheral 时

在 OS X 10.9 和 iOS 6 以后,设备除了能作为 central 外,还可以作为 peripheral。也就是说,可以发起数据,而不像以前只能管理数据了。

那么在此时,它被描述为CBPeripheralManager,既然是作为 peripheral,那么这个类提供的主要方法则是对 service 的管理,同时还兼备着向 central 广播数据的功能。peripheral 同样会对 central 的读写要求做出相应。

下图则是设备作为 central 和 Peripheral 的示意图:

在充当 peripheral 时,CBPeripheralManager处理的是可变的 service 和 characteristic,分别由CBMutableServiceCBMutableCharacteristic表示。

下图则是在设备 peripheral 时,相关类的关系:

之后还会讲到更多的关于 central 和 peripheral 的细节。

iOS 蓝牙技术CoreBluetooth IOS蓝牙技术—CoreBluetooth 一、iOS蓝牙简述 二、CoreBluetooth简介 1、基本概念 2、CoreBluetooth 框架介绍 三、开发模式 1、中心模式 2、外设模式 一、iOS蓝牙简述 ​ iOS开发中关于蓝牙技术的框架有四种: GameKit.framework 多用于游戏开发,iOS设备之间的连接。 MultipeerConnectivity.framework... 阅读详情

相关推荐

iOS 蓝牙入门CoreBluetooth

很久很久以前,曾经遇到一个做体感手环的科技公司,该公司有自己研发的手环设备,需要制作一款App通过蓝牙连接设备,听起来特别有学习劲头,因为市面上很多智能设备的公司都是有与之相配的App使用,比如家喻户晓的小米手环,我同事有一个小米手环借给我用了一段时间,我下了一个小米运动App,稍微给大家展示一下小米手环的界面。 这只是蓝牙用途的一个例子,不知道哪位博友是否有Apple Watch,

王颜华的博客 1209

【亲测免费】 Core Bluetooth Mock:简化蓝牙应用测试的利器

Core Bluetooth Mock:简化蓝牙应用测试的利器 项目介绍 Core Bluetooth Mock 是一个专为模拟 Core Bluetooth 对象而设计的开源库,旨在为开发者提供一个便捷的方式来测试蓝牙应用。由于原生的蓝牙API在模拟器上不受支持,开发者通常需要依赖物理设备进行测试,这不仅增加了测试的复杂性,还延长了开发周期。Core Bluetooth Mock 的出现,彻底改...

gitblog_00119的博客 1109

iOS蓝牙框架CoreBluetooth应用

前一段时间做一个iPhone端通过蓝牙与血压计交互的软件,类似于天天血压这款软件的功能。在此带来了关于蓝牙的一些分享! 1、外设 外设就是一台向外发送信息的设备,它以广播的形势进行消息的发送,在手机和血压计中,血压计所扮演的角色就是外设。其它的一些例子,又比如智能手环、打印机、跑步用的计步器等等,这些设备都是属于外设。在CoreBluetooth 中是通过CBPeripheralManag

applexiaozhu的博客 1393

CoreBluetooth基本应用(一)

1外设管理器 蓝牙外设管理中心,与手机的蓝牙硬件模板关联,可以获取到手机中蓝牙模块的一些状态等,但是管理的就是蓝牙外设。 1.1对外设管理器强引用 @property(nonatomic,strong)CBPeripheralManager *peripheralManager; 1.2初始化外设管理器 self.peripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:dispatch_

feelinghappy的专栏 268

iOS Core Bluetooth 基础知识

本文假设您了解蓝牙低能耗(BLE)和iOS编程的基础知识(包括许多iOS原生API常见的异步调用的委托模式),并旨在作为iOS核心蓝牙库来龙去向的综合指南。我们将指导您了解API的主要组件,包括扫描、连接和与BLE外围设备交互的基本步骤,以及iOS上BLE的常见陷阱和要了解的事情。

小桥流水哗啦啦,iOS Coder 哒哒哒 4330

ios -蓝牙开发

iOS CoreBluetooth 教程 去App Store搜索并下载“LightBlue”这个App,对调试你的app和理解Core Bluetooth会很有帮助。 ================================ Core Bluetooth for iOS 6 CoreBluetooth的API是基于BLE4.0的标准的。这个框架涵盖了BLE标准的所有细

SenDylan 2295

iOS CoreBluetooth 教程

Core Bluetooth for iOS 6 CoreBluetooth的API是基于BLE4.0的标准的。这个框架涵盖了BLE标准的所有细节。仅仅只有新的iOS设备和Mac是和BLE标准兼容的:iPhone4S,iPhone5,MacMini,New iPad,MacBook Air,MacBook Pro。还有iPhone iOS6的模拟器也支持。这是非常有用的,在你没有一个真正的iOS

jimoduwu的专栏 3万+

iOS开发coreBluetooth框架相关

BLE(Bluetooth Low Energy),也称为蓝牙低功耗技术,是蓝牙标准的一个子集,设计用于支持低功耗、短距离无线通信的设备和应用。它主要用于电池供电的小型设备,并在保持连接时消耗极低的能量,适合于物联网(IoT)设备、穿戴式设备、健康监测器、智能家居设备等应用场景。本文仅仅简单介绍了coreBluetooth框架的应用和前后台模式下的差异,如有错误,欢迎指出。

m0_43416443的博客 1690

iOS-蓝牙简介及CoreBluetooth.framework的使用

1.最新的4.0以其低功耗著称,所以一般也叫BLE(Bluetooth Low Energy)。iOS 有两个框架支持蓝牙与外设连接。一个是 ExternalAccessory。从ios3.0就开始支持,也是在iphone4s出来之前用的比较多的一种模式,但是它有个不好的地方,External Accessory需要拿到苹果公司的MFI认证。另一个框架则是本文要介绍的CoreBluetooth,在

学贵有恒 2232

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

iOS 设备作为中心设备(central device)时需要注意:(1)一定要对central Manager保持强引用,也就是说central Manager需要是一个全局变量不能是局部变量,否则不能启动扫描。 (2)连接到peripheral之后,一定记得为peripheral设置代理,否则无法进行服务和特征的发现。 (3)有关CBCentralManagerDelegate协议 协议方

ohyeahhhh的博客 3790

iOS BLE 开发小记[1] CoreBluetooth 是什么

欢迎访问我的博客 muhlenXi,该文章出自我的博客,欢迎转载,转载请注明来源: muhlenxi.com/2017/05/02/…。 导语: 不知不觉从事 iOS 低功耗蓝牙开发也很长一段时间了,一直没时间来的及把自己关于这方面的学习和收获写下来,最近项目迭代更新上线完,有点业余时间,抓紧时间总结一下,说这是与同阶段的小伙伴们之间的交流也好,是给后来的小伙伴的掉坑经验也好。毕竟时间是挤出来的...

weixin_34297704的博客 200

IOS开发-使用蓝牙(CoreBluetooth.f…

一.  先转一篇很好的博文:转自http://blog.csdn.net/chenli522/article/details/17114417 去App Store搜索并下载“LightBlue”这个App,对调试你的app和理解Core Bluetooth会很有帮助。 ================================ Core Bluetooth for iOS 6 C

u012612302的专栏 787

iOSCoreBluetooth

思路 手机与设备间的通讯方式CoreBluetooth是比较常见且通用的。在iOS开发中需明晰以下几点 蓝牙4.0最多可联机7个设备,iPhone6以上都是蓝牙4.0 两台iPhone并不直接通过蓝牙互相搜索配对 苹果设备不支持和其他非苹果设备连接蓝牙,当然,除了蓝牙耳机和车载蓝牙之外 蓝牙传输的字节顺序是小端 CoreBluetooth的最大传输单元是20个字节 知识科普: 字节顺序只是对内置数据类型而言 例如对于一整型(int,int 是内置数据类型)数,比如 0x123456 大端模式: 高地..

God383045的博客 575

iOS 初识CoreBluetooth

####导语: 近距离通讯目前主要有NFC(Near Field Communication),BLE(Bluetooth Low Energy)等技术,本文主要是讲BLE低功耗蓝牙传输。 ###一,BLE前世今生 在iOS开发中,蓝牙通讯有两种方式,一种是传统的蓝牙(Classic Bluetooth),另外一种就是低功耗BLE(Bluetooth Low Energy ).其中传统蓝牙用到...

weixin_34238633的博客 184

iOS 蓝牙 Corebluetooth

蓝牙的现状: *绝大多数智能手机支持蓝牙4.0(BLE) *蓝牙芯片发展迅速,在性能和效率方面都有很大提高,且不断变得更小更便宜 *iBeacon +蓝牙,前景一片光明 -应用之一:室内导航 -Estimote公司为iBeacon提供基站 -3个iBeacon基站的预购价格为99美元(约合人民币610元) -Estimote公司推出的iBeacon基站的最远传

哈鲁的博客 506

iOS CoreBluetooth的swift实现 (1

一点点体会,和大家分享

COOPERC的博客 741
上一篇: iOS开发之详解正则表达式
下一篇: iOS蓝牙的开发专题
爱吃水果
博客等级 码龄15年 1粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值