CoreBlueTooth蓝牙通信
在iOS开发中,CoreBluetooth框架是苹果提供的一种用于设备间低功耗蓝牙(Bluetooth Low Energy, BLE)通信的API。这个框架使得开发者可以构建能够与BLE设备交互的应用,包括作为中心设备(Central)来发现并连接到外围设备(Peripheral),以及作为外围设备来发布服务并接收中央设备的连接。下面我们将详细探讨CoreBluetooth的关键知识点,以及如何通过它实现蓝牙通信。
- CoreBluetooth框架简介
CoreBluetooth框架是Apple的Foundation框架的一部分,适用于iOS、macOS、watchOS和tvOS平台。它提供了一套接口,使得开发者能够处理BLE设备的扫描、连接、读写操作,以及订阅和发送数据。
2.中心设备(Central)
-
扫描外围设备:使用CBCentralManager类的scanForPeripherals(withServices:options:)方法,你可以指定要查找的特定服务UUIDs或者扫描所有设备。
-
连接外围设备:找到外围设备后,通过connect(_:options:)方法建立连接。
-
管理连接状态:CBCentralManagerDelegate中的centralManager(_:didConnect: error:)回调可以监控连接状态,处理成功连接或连接失败的情况。
-
发现服务:连接到外围设备后,使用discoverServices(_:)方法获取外围设备提供的服务。
-
发现特性:对服务中的特征进行查询,通过discoverCharacteristics(_:for:)方法。
-
读取和写入数据:使用readValue(for:)读取特性值,writeValue(_:for:type:)写入数据。
-
订阅和推送:设置CBCharacteristic的notifyValue(_:for:completionHandler:),当特性值改变时,会调用didUpdateValue(for: error:)回调。
3.外围设备(Peripheral)
-
初始化CBPeripheralManager:创建CBPeripheralManager实例,用以管理外围设备的角色。
-
定义服务和特性:使用CBMutableService和CBMutableCharacteristic创建自定义的服务和特性,设置其属性如可读、可写、可通知等。
-
发布服务:调用add(:type:)将服务添加到外围设备,然后使用startAdvertising(:)开始广播服务。
-
响应中央设备:CBPeripheralManagerDelegate的didReceiveWriteRequests(:)和didReceiveReadRequest(:completionHandler:)回调处理来自中央设备的读写请求。
-
更新特性值:使用updateValue(_:for:subscribedCentrals:)方法更新特性值,已订阅的中央设备会接收到变化。
相关资源: