在iOS中使用蓝牙(BLE)最快的方法,即使婴儿也能使用。这是一个简单易用的蓝牙库,基于CoreBluetooth的封装,并兼容iOS和macOS。
为什么要使用它?
当前版本 0.6.0
请参考wiki中的详细文档。项目的完整文档可在其wiki中找到。
app作为中心,连接其他BLE4.0外设
//导入.h文件和系统蓝牙库的头文件
#import "BabyBluetooth.h"
//定义变量
BabyBluetooth *baby;
-(void)viewDidLoad {
[super viewDidLoad];
//初始化BabyBluetooth 蓝牙库
baby = [BabyBluetooth shareBabyBluetooth];
//设置蓝牙委托
[self babyDelegate];
//设置委托后直接可以使用,无需等待CBCentralManagerStatePoweredOn状态
baby.scanForPeripherals().begin();
}
//设置蓝牙委托
-(void)babyDelegate{
//设置扫描到设备的委托
[baby setBlockOnDiscoverToPeripherals:^(CBCentralManager *central, CBPeripheral *peripheral, NSDictionary *advertisementData, NSNumber *RSSI) {
NSLog(@"搜索到了设备:%@",peripheral.name);
}];
//过滤器
//设置查找设备的过滤器
[baby setFilterOnDiscoverPeripherals:^BOOL(NSString *peripheralName, NSDictionary *advertisementData, NSNumber *RSSI) {
//最常用的场景是查找某一个前缀开头的设备 most common usage is discover for peripheral that name has common prefix
//if ([peripheralName hasPrefix:@"Pxxxx"] ) {
// return YES;
//}
//return NO;
//设置查找规则是名称大于1 , the search rule is peripheral.name length > 1
if (peripheralName.length >1) {
return YES;
}
return NO;
}];
//.......
}
更多蓝牙操作方法和委托请参考wiki
中心模式使用示例请参考:BabyBluetoothAppDemo
app模拟一个,BLE4.0外设,可以被其他设备连接和使用
模拟一个有2个service和6个characteristic的外设
//导入.h文件和系统蓝牙库的头文件
#import "BabyBluetooth.h"
//定义变量
BabyBluetooth *baby;
-(void)viewDidLoad {
[super viewDidLoad];
//配置第一个服务s1
CBMutableService *s1 = makeCBService(@"FFF0");
//配置s1的3个characteristic
makeCharacteristicToService(s1, @"FFF1", @"r", @"hello1");//读
makeCharacteristicToService(s1, @"FFF2", @"w", @"hello2");//写
makeCharacteristicToService(s1, genUUID(), @"rw", @"hello3");//可读写,uuid自动生成
makeCharacteristicToService(s1, @"FFF4", nil, @"hello4");//默认读写字段
makeCharacteristicToService(s1, @"FFF5", @"n", @"hello5");//notify字段
//配置第一个服务s2
CBMutableService *s2 = makeCBService(@"FFE0");
makeStaticCharacteristicToService(s2, genUUID(), @"hello6", [@"a" dataUsingEncoding:NSUTF8StringEncoding]);//一个含初值的字段,该字段权限只能是只读
//实例化baby
baby = [BabyBluetooth shareBabyBluetooth];
//配置委托
[self babyDelegate];
//启动外设
baby.bePeripheral().addServices(@[s1,s2]).startAdvertising();
}
//设置蓝牙外设模式的委托
-(void)babyDelegate{
//设置添加service委托 | set didAddService block
[baby peripheralModelBlockOnPeripheralManagerDidUpdateState:^(CBPeripheralManager *peripheral) {
NSLog(@"PeripheralManager trun status code: %ld",(long)peripheral.state);
}];
//设置添加service委托 | set didAddService block
[baby peripheralModelBlockOnDidStartAdvertising:^(CBPeripheralManager *peripheral, NSError *error) {
NSLog(@"didStartAdvertising !!!");
}];
//设置添加service委托 | set didAddService block
[baby peripheralModelBlockOnDidAddService:^(CBPeripheralManager *peripheral, CBService *service, NSError *error) {
NSLog(@"Did Add Service uuid: %@ ",service.UUID);
}];
//.....
}
更多蓝牙外设模式委托请参考wiki
中心模式使用示例请参考:BluetoothStubOnIOS
步骤1:将项目Classes/objc 文件夹中的文件直接拖入你的项目中即可
步骤2:导入.h文件
#import "BabyBluetooth.h"
BabyBluetoothExamples/BabyBluetoothAppDemo :一个类似lightblue的程序,使用BabyBluetooth完成所有蓝牙操作。 功能:
BabyBluetoothExamples/BluetoothStubOnIOS :一个iOS程序,启动后会用手机模拟一个外设,提供2个服务和若干characteristic。该程序作为Babybluetooth 外设模式使用的示例程序
BabyBluetoothExamples/BabyBluetoothOSDemo:这是一个mac os程序,由于os和ios的蓝牙底层方法都相同,因此BabyBluetooth可以同时适用于ios和os。但是os程序的优势在于可以直接在mac上运行蓝牙设备,而ios则必须使用真机才能运行蓝牙设备。因此,在无法使用真机调试的情况下,可以使用os程序来尝试蓝牙库的使用。
功能:
BabyBluetoothExamples/BluetoothStubOnOSX:这是一个mac os程序,该程序可以作为蓝牙外设使用,解决学习蓝牙时没有外设可用的问题,并且可以作为peripheral model模式的学习示例。该程序使用swift进行编码。
功能:
已更新的版本说明请参考wiki。
温馨提示:从零开始进行蓝牙开发可能会很困难,因此即使使用了babybluetooth降低了代码量,仍然非常有必要花几天时间理解蓝牙的基本概念,然后再开始动手。
QQ交流群4:313084771 QQ交流群3:530142592(已满) QQ交流群2:168756967(已满) QQ交流群1:426603940(已满)