iOS面试 - 蓝牙的基本使用

本文详细介绍了iOS中蓝牙通信的基础使用,包括建立中心角色、扫描外设、连接外设、发现服务和特征、数据交互以及断开连接的步骤。在蓝牙交互过程中,iOS应用通常作为中央角色,设备作为外设。需要注意蓝牙通信的限制,如最大发送数据量为20bytes,以及线程管理等关键点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 iOS 中,蓝牙是基于 4.0 标准的,设备间低功耗通信。

其中 Peripheral 外设相当于 Socket 编程中的 Server 服务端,Central 中心相当于 Client 客户端。

本地中心 -> 远程外设
本地外设 -> 远程中心

使用流程:
建立中心角色 —> 扫描外设(discover)—> 发现外设后连接外(connect) —> 扫描外设中的服务和特征(discover) —> 与外设做数据交互(explore and interact) —> 断开连接(disconnect)。

1. 建立中心角色

上面的 delegate 为 CBCentralManagerDelegate,后续蓝牙相关的回调都会在此。

queue 代表蓝牙在哪个队列里面操作,如果传入 nil 默认为主队列,值得注意的是后续的回调也是在传入的队列中调用的,所以如果传入的是非主线程的队列,在 delegate 中需要操作 UI 时需要手动切换到主线程。

CBCentralManager 对象创建后会回调到 centralManagerDidUpdateState 方法来检测蓝牙可用状态,这时我们可以提醒用户设备是否支持蓝牙,是否打开了蓝牙。

2. 扫描外设

如果 serviceUUIDS 为 nil 则会扫描周围所有的设外设,反之只会扫描 UUID 匹配的外设。

CBCentralManagerScanOptionAllowDuplicatesKey 默认为 false,此次扫描中发现过设备则跳过不回调,我们这里传入 true,因为下面做外设掉线的处理时需要用到。

传入的 serviceUUIDS 数组元素为 CBUUID 类型,千万不要传入 String,后面的操作也是如此,不然会碰到很多奇葩问题。

发现外设后会回调到 centralManager(central:didDiscoverPeripheral:adv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值