# BabyBluetooth
The easiest way to use Bluetooth (BLE )in ios,even bady can use . 一个非常容易使用的蓝牙库,当前版本v0.1 。
- 基于原生CoreBluetooth框架封装的轻量级的开源库,可以帮你更简单地使用CoreBluetooth API。
- CoreBluetooth所有方法都是通过委托完成,代码冗余且顺序凌乱。BabyBluetooth使用block方法,可以重新按照功能和顺序组织代码,并提供许多方法减少蓝牙开发过程中的代码量。
- 链式方法体,代码更简洁、优雅。
# Contents
* [用法示例](#用法示例)
* [Quick Example](#Quick Example)
* [初始化](#初始化)
* [搜索设备](#搜索设备)
* [搜索并连接设备](#搜索并连接设备)
* [直接连接设备](#直接连接设备)
* [断开连接和取消扫描](#断开连接和取消扫描)
* [services_characteristic_description](#services_characteristic_description)
* [获取一个characteristic的value和全部description及description的value](#获取一个characteristic的value和全部description及description的value)
* [通知方式监听一个characteristic的值](#通知方式监听一个characteristic的值)
* [取消通知](#取消通知)
* [委托设置](#委托设置)
* [示例](#示例)
* [支持的委托方法](#支持的委托方法)
* [委托方法的频道channel](#委托方法的频道channel)
* [默认频道](#默认频道)
* [链式方法](#链式方法)
* [谓词](#谓词)
* [链式方法的顺序](#链式方法的顺序)
* [如何安装](#如何安装)
* [示例程序说明](#示例程序说明)
* [程序结构](#程序结构)
* [兼容性](#兼容性)
* [后期更新](#后期更新)
* [期待](#期待)
# 用法示例
## Quick Example
```objc
//导入.h文件和系统蓝牙库的头文件
#import <CoreBluetooth/CoreBluetooth.h>
#import "BabyBluetooth.h"
-(void)viewDidLoad {
[super viewDidLoad];
//初始化BabyBluetooth 蓝牙库
baby = [BabyBluetooth shareBabyBluetooth];
//设置蓝牙委托
[self babyDelegate];
__weak typeof(baby) weakBaby = baby;
//因为蓝牙设备打开需要时间,所以只有监听到蓝牙设备状态打开后才能安全的使用蓝牙
[baby setBlockOnCentralManagerDidUpdateState:^(CBCentralManager *central) {
if (central.state == CBCentralManagerStatePoweredOn) {
//开始扫描设备
weakBaby.scanForPeripherals().begin();
}
}];
}
//蓝牙网关初始化和委托方法设置
-(void)babyDelegate{
//设置扫描到设备的委托
[baby setBlockOnDiscoverToPeripherals:^(CBCentralManager *central, CBPeripheral *peripheral, NSDictionary *advertisementData, NSNumber *RSSI) {
NSLog(@"搜索到了设备:%@",peripheral.name);
}];
}
```
## 初始化
```objc
//单例初始化 推荐
BabyBluetooth *baby = [BabyBluetooth shareBabyBluetooth];
//常规初始化
BabyBluetooth *baby = [[BabyBluetooth alloc]init];
```
## 搜索设备
```objc
//搜索设备
baby.scanForPeripherals().begin();
//搜索设备10秒后停止
baby.scanForPeripherals().begin().stop(10);
//设置搜索设备的过滤器
[baby setFilterOnDiscoverPeripherals:^BOOL(NSString *peripheralName) {
//设置查找规则是名称大于1 , the search rule is peripheral.name length > 2
if (peripheralName.length >2) {
return YES;
}
return NO;
}];
```
## 搜索并连接设备
```objc
/*
*搜索设备后连接设备:1:先设置连接的设备的filter 2进行连接
*/
//1:设置连接的设备的过滤器
__block BOOL isFirst = YES;
[baby setFilterOnConnetToPeripherals:^BOOL(NSString *peripheralName) {
//这里的规则是:连接第一个AAA打头的设备
if(isFirst && [peripheralName hasPrefix:@"AAA"]){
isFirst = NO;
return YES;
}
return NO;
}];
//2 扫描、连接
baby.scanForPeripherals().connectToPeripherals().begin()
```
## 直接连接设备
````objc
baby.having(self.currPeripheral).connectToPeripherals().begin();
````
## 断开连接和取消扫描
````objc
//断开单个peripheral的连接
[baby cancelPeripheralConnection:peripheral];//peripheral是一个CBPeripheral的实例
//断开所有peripheral的连
[baby cancelAllPeripheralsConnection];
//取消扫描
[baby cancelScan];
````
## services_characteristic_description
获取设备的services、characteristic、description以及value
````objc
//设置peripheral 然后读取services,然后读取characteristics名称和值和属性,获取characteristics对应的description的名称和值
//self.peripheral是一个CBPeripheral实例
baby.having(self.peripheral).connectToPeripherals().discoverServices().discoverCharacteristics()
.readValueForCharacteristic().discoverDescriptorsForCharacteristic().readValueForDescriptors().begin();
````
## 获取一个characteristic的value和全部description及description的value
````objc
//self.peripheral是一个CBPeripheral实例,self.characteristic是一个CBCharacteristic实例
baby.characteristicDetails(self.peripheral,self.characteristic);
````
## 通知方式监听一个characteristic的值
````objc
//self.peripheral是一个CBPeripheral实例,self.characteristic是一个CBCharacteristic实例
[baby notify:self.currPeripheral
characteristic:self.characteristic
block:^(CBPeripheral *peripheral, CBCharacteristic *characteristics, NSError *error) {
//接收到值会进入这个方法
NSLog(@"new value %@",characteristics.value);
}];
````
## 取消通知
````objc
//self.peripheral是一个CBPeripheral实例,self.characteristic是一个CBCharacteristic实例
[baby cancelNotify:self.peripheral characteristic:self.characteristic];
````
# 委托设置
> 每次调用方法后,都会进入到相应的委托方法。
## 示例
````objc
//设置扫描到设备的委托
[baby setBlockOnDiscoverToPeripherals:^(CBCentralManager *central, CBPeripheral *peripheral, NSDictionary *advertisementData, NSNumber *RSSI) {
NSLog(@"搜索到了设备:%@",peripheral.name);
}];
//设置设备连接成功的委托
[baby setBlockOnConnected:^(CBCentralManager *central, CBPeripheral *peripheral) {
//设置连接成功的block
NSLog(@"设备:%@--连接成功",peripheral.name);
}];
````
设置委托方法后执行
````objc
baby.scanForPeripherals().begin();
````
每当发现perihperal和连接成功后就会进入相应的委托方法。
## 支持的委托方法
````objc
//====================================设置默认的委托方法======================================
//设备状态改变的委托
-(void)setBlockOnCentralManagerDidUpdateState:(void (^)(CBCentralManager *central))block;
//找到Peripherals的委托
-(void)setBlockOnDiscoverToPeripherals:(void (^)(CBCentralManager *central,CBPeripheral *peripheral,NSDictionary *advertisementData, NSNumber *RSSI))block;
//连接Peripherals成功的委托
-(void)setBlockOnConnected:(void (^)(CBCentralManager *central,CBPeripheral *peripheral))block;
//设置查找服务回叫
-(void)setBlockOnDiscoverServices:(void (^)(CBPeripheral *peripheral,NSError *error))block;
//设置查找到Characteristics的block
-(void)setBlockOnDiscoverCharacteristics:(void (^)(CBPeripheral *peripheral,CBService *service,NSError *error))block;
//设置获取到最新Characteristics值的block
-(void)setBlockOnReadValueForCharacteristic:(void (^)(CBPeripheral *peripheral,CBCharacteristic *characteristic,NSError *error))block;
//设置查找到Descriptors名称的block
-(void)setBlockOnDiscoverDescriptorsForCharacteristic:(void (^)(CBPeripheral *peripheral,CBCharacteristic *characteristic,NSError *error))block;
//设置读取到Descriptors�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
BabyBluetoothExamples/BabyBluetoothAppDemo :一个类似lightblue的程序,蓝牙操作全部使用BabyBluetooch完成。 功能: 1:扫描周围设备 2:连接设备,扫描设备的全部services和characteristic 3:显示characteristic,读取characteristic的value,和descriptors以及Descriptors对应的value 4:写0x01到characteristic 5:订阅/取消订阅 characteristic的notify BabyBluetoothExamples/BabyBluetoothOSDemo :一个mac os程序,因为os和ios的蓝牙底层方法都一样,所以BabyBluetooth可以ios/os通用。但是os程序有个好处就是直接可以在mac上跑蓝牙设备,不像ios,必须要真机才能跑蓝牙设备。所以不能真机调试时可以使用os尝试蓝牙库的使用。 BabyBluetooth 一个非常容易使用的蓝牙库。 大家也可以去github上star项目 并下载最新代码。 https://github.com/coolnameismy/BabyBluetooth
资源推荐
资源详情
资源评论
收起资源包目录
BabyBluetooth-master.zip (62个子文件)
BabyBluetooth-master
BabyBluetoothExamples
BabyBluetoothAppDemo
BabyBluetoothAppDemo.xcodeproj
project.xcworkspace
contents.xcworkspacedata 241B
project.pbxproj 25KB
BabyBluetoothAppDemo
CharacteristicViewController.m 13KB
ViewController.m 7KB
Info.plist 1KB
PeripheralViewContriller.m 9KB
PeripheralViewContriller.h 551B
main.m 347B
PeripheralInfo.m 364B
Base.lproj
Main.storyboard 3KB
LaunchScreen.xib 4KB
Images.xcassets
AppIcon.appiconset
Contents.json 585B
ViewController.h 427B
AppDelegate.h 290B
CharacteristicViewController.h 710B
PeripheralInfo.h 381B
AppDelegate.m 2KB
SVProgressHUD
SVIndefiniteAnimatedView.m 5KB
SVProgressHUD.h 4KB
SVProgressHUD.m 38KB
SVProgressHUD.bundle
angle-mask@3x.png 9KB
info@2x.png 2KB
angle-mask@2x.png 5KB
error@3x.png 2KB
info@3x.png 4KB
success@3x.png 2KB
error@2x.png 1KB
success@2x.png 811B
info.png 1KB
angle-mask.png 3KB
error.png 455B
success.png 349B
SVIndefiniteAnimatedView.h 342B
BabyBluetoothAppDemoTests
Info.plist 758B
BabyBluetoothDemoTests.m 905B
BabyBluetoothOSDemo
BabyBluetoothOSDemo.xcodeproj
project.xcworkspace
contents.xcworkspacedata 164B
project.pbxproj 19KB
BabyBluetoothOSDemoTests
BabyBluetoothOSDemoTests.m 907B
Info.plist 754B
BabyBluetoothOSDemo
ViewController.m 4KB
Info.plist 1KB
main.m 250B
Base.lproj
Main.storyboard 56KB
Images.xcassets
AppIcon.appiconset
Contents.json 903B
ViewController.h 227B
AppDelegate.h 237B
AppDelegate.m 492B
src
Babysister.h 2KB
BabyToy.h 959B
BabyBluetooth.h 6KB
BabyToy.m 3KB
Babysister.m 12KB
BabySpeaker.h 1KB
BabySpeaker.m 4KB
BabyCallback.h 3KB
BabyBluetooth.m 16KB
BabyCallback.m 778B
BabyBluetooth.podspec 1KB
LICENSE 1KB
README.md 16KB
.gitignore 494B
temp 3KB
共 62 条
- 1
刘彦玮
- 粉丝: 1
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- HandTrackingModule.py
- Python基于卷积神经网络的鸟类识别项目源代码,ipynb文件
- 批量将py编译为pyd文件.atbx
- Python项目-学生管理系统
- 图像处理基于matlab图像RGB三色合成分离【含Matlab源码第1发】
- verilog HDL硬件语法设计包括算术运算三人表决器Verilog的阻塞和非阻塞赋值源码例程quartus13.1工程合集
- 【文章话题分类论文】OpenAlex Topic Classification Whitepaper
- linux学习常用命令
- 功率拓扑快速参考指南-ti,TI官方出品
- 开源2023电赛国赛运动目标控制(E题)视觉部分
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页