iOS之BLE蓝牙SDK开发个人总结(基础篇)

本文总结了iOS蓝牙SDK开发的基础知识,包括初始化、扫描设备、设备连接、服务和特征的发现、读写及订阅操作。在蓝牙连接管理中,提到了断开连接的正确处理方式以及异常断开时的重连策略。通过对蓝牙开发概念的理解,有助于解决实际开发中遇到的问题。

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

最近一段时间一直在做公司的BLE蓝牙SDK,sdk主要负责外设和手机的连接以及数据通信。过程中遇到了一些比较有价值的问题,现在总结记录下。

蓝牙开发使用系统框架#import <CoreBluetooth/CoreBluetooth.h>使用[[CBCentralManager alloc] initWithDelegate:self queue:nil]初始化CBCentralManager对象。(设置CBCentralManagerDelegate为self,nil表示在主线程) 初始化成功后系统会自动检测蓝牙状态。实现centralManagerDidUpdateState:代理方法可实时获取蓝牙状态。当central.stateCBManagerStatePoweredOn时表示可用。

初始化完成可使用[self.centralManager scanForPeripheralsWithServices:nil options:nil]方法扫描周围设备(Services表示只扫描具有某些ServiceUUID的设备,nil为扫描全部)。 当扫描到设备时会执行代理方法centralManager:didDiscoverPeripheral:advertisementData:RSSI:返回每一个扫描到的设备及设备的相关信息。

为了使用方便,可以把扫描的设备、连接的设备、设备的服务、设备的特征分别保存到数组中

@property(nonatomic, strong) NSMutableArray<CBPeripheral *> *peripheralArr;             //扫描到的设备数组
@property(nonatomic, strong) NSMutableArray<CBPeripheral *> *currentPeripheralArr;      //当前连接的所有设备
@property(nonatomic, strong) NSMutableArray<CBService *> *serviceArr;                   //当前连接设备的服务
@property(nonatomic, strong) NSMutableArray<CBCharacteristic *> *characteristicArr;     //当前连接的设备的所有特征
复制代码

保存到数组中的设备可通过UUID来进行区分。从 iOS7之后苹果不提供外设的mac</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值