DVBluetooth Objective-C && Swift
簡(jiǎn)介
該Manager 主要是在 CoreBluetooth 的基礎(chǔ)上再次封裝。
(Swift 版本已經(jīng)更新:下載地址)
下載地址
Github地址: https://github.com/HeDefine/DVBluetooth]
1. 手動(dòng)安裝
- 下載本項(xiàng)目Zip,并解壓.
- 拖取DVBluetooth/DVBluetooth 文件夾到你的項(xiàng)目中
- 導(dǎo)入本項(xiàng)目
import "DVBluetooth/DVBluetooth.h"
2.Cocoapod 安裝
- 安裝Cocoapod, 并在根目錄下運(yùn)行
pod init - 在
Podfile文件中輸入
pod 'DVBluetooth','~> 0.2.0'
- 命令行運(yùn)行
pod update
使用方法
建議新建一個(gè)類,繼承原有的 DVBleManager 以及新建一個(gè) Protocol . 對(duì)收到的數(shù)據(jù)處理后可以通過協(xié)議回調(diào)
根據(jù)自己項(xiàng)目的需求,在這個(gè)類里面可以自定義 1. 特征值的UUID 2.對(duì)回調(diào)數(shù)據(jù)的處理 3.處理發(fā)送數(shù)據(jù)的方式
1. 配置
#define UUIDWriteDataService @"FFE5"
#define UUIDWriteDataCharateristic @"FFE9"
#define UUIDReadDataService @"FFE0"
#define UUIDReadDataCharateristic @"FFE4"
#define UUIDInfoService @"FF90"
#define UUIDDeviceNameCharateristic @"FF91"
+ (instancetype)shared {
static BedManager *instance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[BedManager alloc] init];
});
return instance;
}
- (instancetype)init {
self = [super init];
if (self) {
[self configuration];
}
return self;
}
/**
初始化配置, 個(gè)性化配置
*/
- (void)configuration {
//篩選掉掃描到的設(shè)備
[self setScannedPeriFilterBlock:^BOOL(DVBlePeripheral *peripheral) {
return peripheral.name && peripheral.name.length > 0;
}];
//篩選掉服務(wù)和特征值
[self setConnectPeriFilterBlock:^BOOL(DVBlePeripheral *peripheral) {
BOOL have1 = [peripheral filterService:UUIDWriteDataService
characteristics:@[UUIDWriteDataCharateristic]];
BOOL have2 = [peripheral filterService:UUIDReadDataService
characteristics:@[UUIDReadDataCharateristic]];
return have1 && have2;
}];
//監(jiān)聽值
[self setNotifyPeriCharacteristicBlock:^(DVBlePeripheral *peripheral) {
[peripheral startNotifyCharacteristicUUID:UUIDReadDataCharateristic];
}];
self.enableReconnect = YES;
self.reconnectDuration = 5;
self.maxReconnectTimes = 5;
self.maxConnectedPeripheralsCount = 1;
}
2. 讀取和寫入回調(diào)的復(fù)寫, 主要用來(lái)對(duì)回調(diào)數(shù)據(jù)的處理
/**
寫入 回調(diào)
*/
- (void)didPeripheralWriteData:(DVBlePeripheral *)peripheral
characteristicUUID:(NSString *)characteristicUUID
resultState:(DVBlePeripheralWriteState)result {
if ([characteristicUUID isEqualToString:UUIDWriteDataCharateristic]) {
/**** 發(fā)送數(shù)據(jù)回調(diào) ****/
}
}
/**
讀取回調(diào). 處理數(shù)據(jù)
*/
- (void)didPeripheralReadData:(DVBlePeripheral *)peripheral
characteristicUUID:(NSString *)characteristicUUID
data:(nullable NSData *)data
resultState:(DVBlePeripheralReadState)result {
if ([characteristicUUID isEqualToString:UUIDReadDataCharateristic]) {
/**** 處理數(shù)據(jù) ***/
}
}
3. 寫入方法
#pragma mark - 個(gè)性化設(shè)置
- (void)writeData:(NSString *)dataStr {
if (self.connectedPeripherals.count == 0) {
NSLog(@"當(dāng)前沒有連接的設(shè)備");
return;
}
//將十六進(jìn)制字符串轉(zhuǎn)換成NSData型。
NSData *data = [NSData dataFromHexString:dataStr];
//發(fā)送數(shù)據(jù)
[self writeDataToPeripheral:self.connectedPeripherals.firstObject
onCharacteristicUUID:UUIDWriteDataCharateristic
withData:data];
}
//頭部抬起指令
- (void)headup {
[self writeData:@"FFFFFFFFFFFF"];
}