iOS蓝牙开发学习(1)-简要概述篇

这篇博客简要介绍了iOS蓝牙开发,特别是手机作为Central的角色,讨论了与Peripheral的连接、Service与Characteristic的概念,以及如何处理Android与iOS在获取Mac地址上的差异。文章提到了心跳连接、数据传输、订阅管理、固件升级(DFU)和CBCentralManager的初始化选项,强调了数据长度和重复订阅的注意事项。

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

闲来无事,稳固下对蓝牙开发的知识点,顺便记录下博客,仅供参考。纯手打,请轻喷。

  1. iOS蓝牙开发分为手机作为Central(中心设备),Peripheral(外设)两种情景,其中中心设备和外设传输数据,还有一种名字叫做,上行、下行。 本文主要讲述手机作为Central的开发情景,并且只针对单一Peripheral连接,不过会讲解到连接不同型号的Peripheral。

  2. 关于蓝牙开发,除了中心设备和外设需要搞清楚以为,还要明白几个名词,Service(服务)、Characteristic(特征)。针对Peripheral来讲,一个Peripheral有多个Service,每个Service有多个Characteristic,整体结构类似于一个二维数组。参考API可以证明上述论点,也可以nRF Connect、LightBlue等第三方蓝牙调试工具。
    
    - (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(nullable NSError *)error;
    - (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(nullable NSError *)error;
    
  3. 业务需求中,基本都需要连接指定的Per,针对该需求,安卓可以直接获取Per信息的Mac地址,但是iOS并不支持,针对这种情况,可以让硬件方面将mac地址加入广播中,当手机扫描到该per时会触发回调。可以通过回调中的“advertisementData”获得mac,进行匹配操作
    - (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI;

  4. 实际开发中,大多需要保持对同一设备的稳定连接,以及自动连接。可以根据项目需求情况,来决定采用什么方式,我先简单阐述下目前我发现的方案,后面会详细讲解。①保存mac,每次启动蓝牙的时候扫描匹配 ②断开连接的时候,调用请求连接方法 
  5. 可能部分app的业务需求,需要app在后台长期和蓝牙进行数据交互,针对这种需求,建议 per与app间建立心跳连接,频率我采用的是一分钟。
  6. 关于数据传输,其实类似和后台的数据请求,主要区别的是数据格式的问题。 数据传输中,需要注意的是,当向per传数据时,Characteristic是否是response或者是withouResponse,如果写错,是无法正常传输的。
  7. 数据传输中,请注意数据长度的问题,适当进行分包操作。
  8. 关于订阅(通知),请注意不要重复订阅。
  9. 固件升级(DFU),主要分为两种方式,看与硬件厂商的协定。第一种是DFU升级,直接通过DFU官方提供的第三方进行升级,第二种是根据协议,将固件包通过分包方式发送到per
  10. 需要注意CBCentralManager初始化方式,CBCentralManagerOptionRestoreIdentifierKey 涉及到app唤醒操作,请注意使用。
  11. 固件升级操作,可能会导致mac地址变化,具体和厂商协定。

是我写的不好吗???都没人看第二篇的吗???

纯手打,不足之处请指出,谢谢。

具体开发讲解。请看第二篇~

iOS蓝牙开发学习(2)--连接、读写、DFU升级篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值