美文网首页
蓝牙扫描,连接,服务,特征,配对,读写.

蓝牙扫描,连接,服务,特征,配对,读写.

作者: Zavier_copy | 来源:发表于2020-06-28 16:29 被阅读0次

1.初始化

-(instancetype)initWithDelegate:(nullable id<CBCentralManagerDelegate>)delegate
queue:(nullable dispatch_queue_t)queue
options:(nullable NSDictionary<NSString *, id> *)options NS_AVAILABLE(10_9, 7_0) NS_DESIGNATED_INITIALIZER;
options有以下两种:
CBCentralManagerOptionShowPowerAlertKey 蓝牙没打开时会显示一个提示框
CBCentralManagerOptionRestoreIdentifierKey CBCentralManager恢复的IdentifierKey

2.扫描

-(void)scanForPeripheralsWithServices:(nullable NSArray<CBUUID *> *)serviceUUIDs options:(nullable NSDictionary<NSString *, id> *)options;
第一个参数是UUID:
外设广播UUID时, 可以在这里填写特定UUID,用于搜索特定UUID的外设.
第二个参数:
CBCentralManagerScanOptionAllowDuplicatesKey
key值是NSNumber,默认值为NO表示不会重复扫描已经发现的设备,如需要不断获取最新的信号强度RSSI所以一般设为YES了
CBCentralManagerScanOptionSolicitedServiceUUIDsKey
你想扫描的serviceUUID数组

-(void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *, id> *)advertisementData RSSI:(NSNumber *)RSSI;
在这个代理方法里获取扫描到的数据,外设,广播数据,信号强度

3.连接

-(void)connectPeripheral:(CBPeripheral *)peripheral options:(nullable NSDictionary<NSString *, id> *)options;
第一个参数:你想要连接的外设
第二个参数:
CBConnectPeripheralOptionNotifyOnConnectionKey 在程序被挂起时,连接成功显示Alert提醒框
CBConnectPeripheralOptionNotifyOnDisconnectionKey 在程序被挂起时,断开连接显示Alert提醒框
CBConnectPeripheralOptionNotifyOnNotificationKey 在程序被挂起时,显示所有的提醒消息
其他三个感觉用不到,就不一一列举了.

在连接成功后,需要调用- (void)discoverServices:(nullable NSArray<CBUUID *> *)serviceUUIDs; 去发现外设的服务

4.服务

-(void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(nullable NSError *)error 发现服务的回调方法
发现服务后, 需要调用- (void)discoverCharacteristics:(nullable NSArray<CBUUID *> *)characteristicUUIDs forService:(CBService *)service; 去获取外设特征.

5.特征

-(void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(nullable NSError *)error; 获取外设特征回调
1.可以在这个回调里获取到自己需要的特征值, 读,写等.
2.可以在这个回调里订阅读,被动获取外设发过来的数据.
3.可以在这个回调里判断特征值权限,使用- (void)readValueForCharacteristic:(CBCharacteristic *)characteristic;这个方法, 如果不允许读, 那就需要配对连接之后才能读,可以以此来判断是否需要配对, 以及什么时候配对完成, 因为苹果系统API并未提供任何有关配对状态的属性或方法.

6.读写

-(void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(nullable NSError *)error; 这是读的回调方法.
-(void)writeValue:(NSData *)data forCharacteristic:(CBCharacteristic *)characteristic type:(CBCharacteristicWriteType)type; 这是写的方法.

7.蓝牙连接的流程图

bluetooth_connect_flow.png

最近一直在研究BLE蓝牙, 欢迎大家一起交流分享.
推荐一个牛批的蓝牙库babyBluetooth.

相关文章

  • 蓝牙扫描,连接,服务,特征,配对,读写.

    1.初始化 -(instancetype)initWithDelegate:(nullable id

  • 蓝牙:Bluetooth API

    打开蓝牙 扫描其他蓝牙设备 查询本地蓝牙适配器的配对蓝牙设备 建立 RFCOMM 通道 通过服务发现连接到其他设备...

  • Android 经典蓝牙开发(二)

    本文章经典蓝牙开发目录: 1、权限申请2、开启蓝牙3、扫描蓝牙4、配对蓝牙5、连接蓝牙6、通信(实现双向通信)(我...

  • ionic中实现BLE的基本功能和注意事项

    在项目中安装BLE插件 扫描蓝牙设备 扫描蓝牙只能获取到 连接蓝牙设备 读取特征值有Read的属性的内容 写数据 ...

  • 蓝牙连接

    蓝牙门控使用须知 1、连接蓝牙必须打开手机蓝牙和定位服务,在设备蓝牙范围内进行配对。 2、初次连接初始密码(000...

  • iOS蓝牙开发之CoreBluetooth框架简介

    蓝牙实现流程: 1.建立中心管理者2.扫描外设3.连接外设4.扫描外设的服务和特征5.与外设进行数据交互 代码实现...

  • 蓝牙问题集锦

    扫描蓝牙 手机锁屏状态下,后台服务无法扫描蓝牙设备频繁扫描,导致扫描蓝牙失败定位服务关闭时,后台无法扫描蓝牙

  • Android之Bluetooth配对

    前言 解读JniCallbacks 场景:配对建立连接过程 案例:蓝牙配对连接注:配对的前提,设备已知,代码分析要...

  • android专题-蓝牙扫描、连接、读写

    常用业务API 1.判断当前蓝牙是否已经开启,如果没有开启提示用户开启2.实时扫描周边蓝牙,获取蓝牙名给用户选择3...

  • Android蓝牙API介绍

    引用自:Android蓝牙API 1.简介 通过蓝牙API,可以实现以下内容: 扫描其他蓝牙设备 查询配对蓝牙设备...

网友评论

      本文标题:蓝牙扫描,连接,服务,特征,配对,读写.

      本文链接:https://www.haomeiwen.com/subject/noewfktx.html