IOS蓝牙开发心得

这几年一直在做IOS端的智能穿戴的APP,使用蓝牙开发的频率也比较高,所以对蓝牙开发还是有一定的了解,写篇文章记录总结。

理论知识,我就不详细说了。简单理解:我们手机是CBCentralManager,就是中心。我们的手环等是CBPeripheral,就是外设。

手机APP连接外设需要的步骤:搜索外设—>>连接外设—->>查找外设的服务—->>查找外设的服务对应特征。以上都是成功,不包括错误失败。

手机APP收发指令,都是通过 服务+特征 来进行处理。

具体的做法,我们可以看我封装的一个类,拖到项目中就可以用。

一、初始化

封装的类名为:BleOperatorManager

_bleOpt = [BleOperatorManager sharedInstance];

_bleOpt.delegate = self;

_bleOpt.realTimeUpdateDeviceListBlock = ^(NSArray *listArray, NSDictionary *rssiDic, NSDictionary *macDic) {

//实时返回搜索到的外设,listArray存了所有的外设结构(CBPeripheral *),macDic保存了外设的mac地址

 };

 _bleOpt.gainMacAddress = ^NSString *(NSDictionary *advertisementData) {

//解析mac地址,并返回给原类

            NSData *data = advertisementData[@"kCBAdvDataManufacturerData"];

            return @"FF:FF:FF:FF";

};

二、基本操作指令

搜索:startScanDevice:(NSArray *)adverUUIDArray

停止搜索:stopScanDevice

连接外设:connectSelectPeripheral:(CBPeripheral *)peripheral

断连:disconnectCurrentPeripheral:(BOOL)hasRecord

三、收发操作

前面说过,发送是需要 服务+特征 的,服务和特征,在连接蓝牙的时候,可以得到,当然也可以lightBlue查看。

然后发送就是:sendDataToBand:(NSData *)data WithServiceUUID:(NSString *)serviceUUID WithCharacteristicUUID:(NSString *)characteristicUUID withWriteType:(CBCharacteristicWriteType)writeType

如果发送是CBCharacteristicWriteWithResponse类型,那么发送完成后,就会调用

peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error

{

//发送后的代理

}

接收数据:外设主动操作,我们只是对应代理回调:

peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error

{

//收到的数据为:characteristic.value

}

四、后话

还得有下面的配置:

项目加入CoreBluetooth库

plist文件加入:

Required background modes:App communicates using CoreBluetooth

蓝牙类:GitHub - wulang150/BleManager: 蓝牙模块

你可能感兴趣的:(IOS蓝牙开发心得)