行业动态
ios开发 蓝牙 hhhhh,框架的核心其实是两个东西
2021-02-01

1.概念

BLEios开发 蓝牙,低功耗buletouch蓝牙4.0器件,因为其功耗低而也被称为BLE;中央设备,用于扫描外围蓝牙外围设备,例如我们上面提到的中央人员模式,此时我们的手机是中央设备;外围设备,扫描的蓝牙设备,例如我们如上所述连接到小米手环的手机,此时小米手环就是外围设备;广播时,外部设备连续广播蓝牙信号,以便中央设备可以扫描,这也是我们开发中接收数据的入口;服务,外部设备在与中央设备连接后将获得服务,这可以理解为功能模块,并且中央设备可以读取该服务并过滤所需的服务以及所需的特性。 (外围设备可以有多种服务);特性,服务中的一个单元ios开发 蓝牙,服务可以具有多个功能,而一个功能将具有一个值。通常,我们向蓝牙设备写入数据或从蓝牙设备读取数据。 UUID,一个区分不同服务和功能的唯一标识符。使用此字符终端,我们可以获得所需的服务或功能(ps:同一蓝牙设备的不同中央设备(或不同的移动电话),获得的UUIDString可能不同)。2.CoreBluetooth框架

CoreBluetooth框架的核心实际上是外围和中央两件事,可以理解为外围和中央。

图中的两组API对应于不同的业务场景。左侧称为中心模式,这是您的应用程序为中心并连接到其他外围设备的场景,而右侧称为外围设备模式,使用手机作为外部设备来区分其他中央设备操作的场景

蓝牙中心模式过程

 

1. 建立中心角色
2. 扫描外设(discover)
3. 连接外设(connect)
4. 扫描外设中的服务和特征(discover)
    - 4.1 获取外设的services
    - 4.2 获取外设的Characteristics,获取Characteristics的值,获取Characteristics的Descriptor和Descriptor的值
5. 与外设做数据交互(explore and interact)
6. 订阅Characteristic的通知
7. 断开连接(disconnect)

 

蓝牙外围模式过程

 

1. 启动一个Peripheral管理对象
2. 本地Peripheral设置服务,特性,描述,权限等等
3. Peripheral发送广告
4. 设置处理订阅、取消订阅、读characteristic、写characteristic的委托方法

 

3.演示(仅在此处编写居中模式)

支持蓝牙名称搜索和过滤,连接多个蓝牙设备,连续编写多个命令

 

@class LSBluetoothManager;
@protocol LSBluetoothManagerDelegate <NSObject>
@optional
// 获取设备,会调用多次,需要先调用- (void)startScanDevices;
- (void)manager:(LSBluetoothManager *_Nullable)manager didDiscoverDeveice:(nonnull LSBluetoothModel *)peripheral error:(nullable NSError *)error;
// 连接某一台设备是否成功的结果,需要先调用- (void)conect:(CBPeripheral *)peripheral;
- (void)manager:(LSBluetoothManager *_Nonnull)manager connectedDevice:(nonnull CBPeripheral *)peripheral state:(BOOL)state;
// 写入数据结果,需要先调用writeWithPeripheral:(CBPeripheral *_Nonnull)peripheral ServiceUUID:(NSString * _Nonnull )ServiceUUID CharacteristicWriteUUID:(NSString *_Nonnull)characteristicWriteUUID CharacteristicNotifyUUID:(NSString *_Nonnull)characteristicNotifyUUID CMD:(NSString *_Nonnull)CMDString;
- (void)manager:(LSBluetoothManager *_Nullable)manager didUpdateValueForCharacteristic:(nonnull CBCharacteristic *)characteristic receiveData:(NSData *_Nullable)receiveData error:(nullable NSError *)error;
@end
@interface LSBluetoothManager : NSObject
@property (nonatomic, weak, nullable) id <LSBluetoothManagerDelegate> delegate;
// 初始化蓝牙
+ (instancetype _Nonnull )shareManager;
// 蓝牙是否打开,需要设置代理
- (BOOL)isAuthorizationOpen;
// 开始扫描,prefix: 只查找某一个前缀开头的设备,传nil默认扫描所有
- (void)startScanDevicesHasNamePrefix:(NSString *_Nullable)nameprefix;
// 结束扫描
- (void)stopScanDevices;
// 连接某一台设备
- (void)conect:(CBPeripheral *_Nonnull)peripheral ServiceUUID:(NSString * _Nonnull )ServiceUUID CharacteristicWriteUUID:(NSString *_Nonnull)characteristicWriteUUID CharacteristicNotifyUUID:(NSString *_Nonnull)characteristicNotifyUUID;
// 判断获取某一台设备是否在线
- (BOOL)isOnLine:(CBPeripheral *_Nonnull)peripheral ServiceUUID:(NSString *_Nonnull)ServiceUUID;
// 断开某一台设备
- (void)disconect:(CBPeripheral *_Nullable)peripheral;
// 写入数据
- (void)writeWithPeripheral:(CBPeripheral *_Nonnull)peripheral ServiceUUID:(NSString * _Nonnull )ServiceUUID CharacteristicWriteUUID:(NSString *_Nonnull)characteristicWriteUUID CharacteristicNotifyUUID:(NSString *_Nonnull)characteristicNotifyUUID CMD:(NSString *_Nonnull)CMDString;
@end

 

门户,祝自己生日快乐,


393701618