设备管理模块
配网
请使用蓝牙为音箱配网,从服务端请求device code用于绑定音箱与账户,再通过蓝牙将配网信息发送给音箱,音箱开始联网。
请求device code
引用头文件:#import <XYServiceSDK/XYSDK+Account.h>
,请求 device code接口:
/**
* 获取配网设备码
*/
+ (void)requestUserDeviceCodeCompletionBlock:(nullable void(^)(BOOL success, NSString* _Nullable deviceCode))block;
返回值如下:
@"eb9e8456345d424e88ca0fded939f316"
蓝牙相关接口
若使用SDK提供的蓝牙模块,请引用头文件:#import <XYServiceSDK/XYSDKBluetoothManager.h>
。
搜索蓝牙设备列表
/**
* 获取蓝牙设备列表
* @param prefixs 设备名称前缀数组(Nano、Home,@""代表不过滤)
* @param completion 完成回调
*/
- (void)fetchPeripheralListWithPeripheralPrefixs:(NSArray <NSString *>*)prefixs completion:(void(^)(NSArray <XYPeripheral *>*))completion;
prefixs: 代表仅搜索对应前缀名称的蓝牙设备
开始连接设备
/**
* 开始连接设备
@param peripheral 连接的设备
@param stateBlock 状态回调
*/
- (void)connectToPeripheral:(XYPeripheral *)peripheral completion:(XYBlueToothStateBlock)stateBlock;
中断连接
/**
* 中断连接
*/
- (void)interruptConnect;
开始配网
/**
* 开始连接设备
@param password 密码(无密码传空字符串)
@param ssid wifi名
@param code 配网deviceCode(通过接口请求获取)
@param isHideNet 是否为隐藏网络(YES 隐藏;NO 不隐藏)
*/
- (void)writeDataPassword:(NSString *)password ssid:(NSString *)ssid deviceCode:(NSString *)code isHideNet:(BOOL)isHideNet completion:(void(^)(BOOL isConnected, NSDictionary *__nullable deviceInfo, NSError *__nullable error))completion;
查询设备信息
引用头文件:#import <XYServiceSDK/XYSDK+Device.h>
获取用户的设备列表
/**
* 请求用户的设备列表
*/
- (void)requestDeviceListWithCompletion:(nullable void (^)(NSArray *__nullable deviceList, NSError *__nullable error))completion;
返回值为数组:
[{
"speaker_version": "0.0.10",
"speaker_id": 66,
"product_id": "N_PROD1_7",
"name": "未知音箱",
"create_dt": "2019-06-27 19:55:40",
"sn": "NANO00018C60074F",
"product_name": "",
"ssid": "XMLY-2.4",
"client_id": "os.client.sdkdemo",
"rom_version": "0.0.2",
"mac": "14:16:9E:38:FD:FD"
}, {
"speaker_version": "0.0.10",
"speaker_id": 38,
"product_id": "1001",
"name": "未知音箱",
"create_dt": "2019-06-04 17:18:42",
"sn": "YAMI00018A900041",
"product_name": "",
"ssid": "XMLY_VPN",
"client_id": "os.client.000163",
"rom_version": "0.0.1",
"mac": "14:16:9E:2C:81:DE"
}]
查询音箱在线状态
/**
* @brief 音箱在线状态获取
* @param sn 音箱sn(sn为空则查询当前设备)
* @param completion 完成回调
*/
- (void)requestDeviceStatus:(NSString *_Nonnull)sn completion:(nullable void (^)(NSDictionary *__nullable statusInfo, NSError *__nullable error))completion;
查询当前音箱信息
/**
* @brief 查询当前音箱信息
* @param completion 完成回调
*/
- (void)requestCurrentDeviceInfo:(nullable void (^)(NSDictionary *__nullable deviceInfo, NSError *__nullable error))completion;
解绑设备
引用头文件:#import <XYServiceSDK/XYSDK+Device.h>
,删除设备:
/**
* 请求用户的设备列表
*/
- (void)deleteDevice:(nonnull NSDictionary *)deviceInfo completion:(nullable void (^)(NSDictionary *__nullable responseInfo, NSError *__nullable error))completion;
deviceInfo: NSDictionary类型,包含设备sn和client_id,例如:@{@"sn": @"Nano123456", @"client_id": @"os.client.00016"}
音箱OTA升级
查询音箱是否有新版本
/**
* @brief 查询音箱是否有新版本
* @param deviceInfo 音箱信息 @{@"speaker_version": @"", @"sn": @"", @"rom_version": @""}
* @param completion 完成回调
*/
- (void)requestDeviceVersionInfo:(nonnull NSDictionary *)deviceInfo completion:(void (^__nullable)(NSDictionary *__nullable versionInfo, NSError *__nullable error))completion;
控制音响进行固件升级
/**
* @brief 控制音响进行固件升级
* @param deviceSn 音箱id
* @param completion 完成回调
*/
- (void)requestDeviceUpgrade:(NSString *_Nonnull)deviceSn completion:(void (^__nullable)(NSDictionary *__nullable info, NSError *__nullable error))completion;
获取音箱升级状态
/**
* @brief 轮询获取音箱升级状态(完成后应调用停止轮询的方法)
* @param deviceInfo 音箱信息 @{@"speaker_version": @"", @"sn": @"", @"rom_version": @""}
* @param completion 轮询时回调
*/
- (void)scheduleDeviceUpgradeStauts:(nonnull NSDictionary *)deviceInfo completion:(void (^__nullable)(NSDictionary *__nullable statusInfo, NSError *__nullable error))completion;
停止轮询升级状态
/**
* @brief 停止轮询升级状态
*/
- (void)invalidateScheduleUpgradeStatus;
修改音箱信息
目前仅支持修改音箱名称:
/**
* @brief 修改音箱名称
* @param name 音箱名称
* @param completion 完成回调
*/
- (void)updateDeviceName:(NSString *_Nonnull)name completion:(void (^__nullable)(BOOL success, NSError *__nullable error))completion;