蓝牙 Breeze SDK
更新时间:2018-05-24 23:56:59
概述
阿里巴巴物联网平台定义了《阿里巴巴物联平台蓝牙设备接入规范》,包括蓝牙广播规范,蓝牙接入服务规范,通信协议规范等,用于阿里巴巴的合作厂商作为阿里巴巴物联平台蓝牙设备的接入标准。此规范适用于需要复杂交互的蓝牙设备。 Breeze SDK 是按照规范实现的手机端蓝牙 SDK,方便合作厂商在手机端快速接入蓝牙功能。Breeze SDK 包含的主要功能有:设备发现连接,设备通信,加密传输,大数据传输等。
注:Breeze SDK 需要和设备端 SDK 配套使用。
依赖 SDK
|
概述
|
基础依赖 SDK,提供客户端统一日志打印,日志等级控制,分模块日志隔离等能力
|
|
API 通道 SDK,提供 IoT 业务协议封装的 https 请求能力,并通过整合安全组件来提升通道的安全性。
|
初始化
此功能模块依赖 API 通道,使用前请确定 API 通道初始化完成。
#import <BreezeSdk/Breeze.h>
//需要在ViewController或合理位置做强引用
self.breeze = [Breeze new];
//添加BreezeDelagete代理;这里假设self对象实现了BreezeDelagete协议
[self.breeze addBreezeDelagete:self];
使用说明
开始发现设备
#import <BreezeSdk/Breeze.h>
[self.breeze discoverPeripheral];
当发现支持 Breeze 协议的蓝牙设备时,通过 BreezeDelagete 中接口通知:
/**
扫描周边设备的回调接口
@param breeze Breeze对象
@param peripheral 扫描到的peripheral对象
@param advertisementData 广播数据
@param RSSI RSSI数据
@param extra 附加数据字典,包含mac地址,是否支持encrypt,是否支持ota等
*/
- (void)breeze:(Breeze *)breeze didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI extra:(NSDictionary *)extra {
}
停止发现设备
#import <BreezeSdk/Breeze.h>
[self.breeze stopDiscoverPeripheral];
连接设备
#import <BreezeSdk/Breeze.h>
NSString *mac = ... //蓝牙设备mac地址通常需要从扫描到的设备列表中获取
[self.breeze connectPeripheralUseMac:mac];
设备的连接结果,通过 BreezeDelagete 中接口通知:
/**
连接结果通知
@param breeze Breeze对象
@param peripheral 已连接的peripheral对象
@param error 错误信息
*/
- (void)breeze:(Breeze *)breeze didConnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error {
}
设备状态变化,通过 BreezeDelagete 中接口通知:
/**
手机蓝牙状态变化
@param breeze Breeze对象
@param state 状态描述
*/
- (void)breeze:(Breeze *)breeze didCentralStateChanged:(CBManagerState)state {
}
/**
蓝牙设备状态变化
@param breeze Breeze对象
@param state 状态描述
*/
- (void)breeze:(Breeze *)breeze didPeripheralStateChanged:(CBPeripheralState)state {
}
断开设备连接
#import <BreezeSdk/Breeze.h>
[self.breeze disconnectPeripheral];
数据收发
当收到 breeze:didConnectPeripheral:error: 通知后,并且没有出错,才可以进行数据收发。
#import <BreezeSdk/Breeze.h>
NSData* data = ...;
BOOL needResponse = ...;//命令是否需要回复,根据业务场景选择
[self.breeze sendData:data needResponse:needResponse];
设备回复的数据或设备主动上报的数据,通过 BreezeDelagete 中接口通知:
/**
收到蓝牙设备的数据
@param breeze Breeze对象
@param data 数据
@param msgId 消息id,对应发送数据的消息id
@param error 错误信息
*/
- (void)breeze:(Breeze *)breeze didReceivedData:(NSData *)data msgId:(NSInteger)msgId error:(NSError *)error {
}
添加 BreezeDelagete 代理
#import <BreezeSdk/Breeze.h>
//初始化时添加代理;这里假设self对象实现了BreezeDelagete协议
[self.breeze addBreezeDelagete:self];
移除 BreezeDelagete 代理
#import <BreezeSdk/Breeze.h>
//使用完成时需要移除代理;这里假设self对象实现了BreezeDelagete协议
[self.breeze removeBreezeDelagete:self];
获取蓝牙设备信息
#import <LKBreezeBiz/LKBreezeBiz.h>
//需要在ViewController或合理位置做强引用,并传入连接完成的Breeze对象
self.breezeBiz = [[LKBreezeBiz alloc]initWithBreeze:self.breeze];
//设备信息包含productId,productKey,deviceName等
[self.breezeBiz prepareDeviceInfo:^(NSDictionary *deviceInfo, NSError *error) {
if(error == nil) {
//处理设备信息
}
}];
//调用prepareDeviceInfo:成功后,可以通过breezeBiz.deviceInfo来获取缓存的设备信息
用户绑定蓝牙设备
#import <LKBreezeBiz/LKBreezeBiz.h>
//需要在prepareDeviceInfo:之后调用,绑定设备依赖部分设备信息
[self.breezeBiz userBindDevice:^(NSString *iotId, NSError *error) {
if (error == nil) {
//绑定成功
}
}];