TuyaSmartSweeperKit 3.2.4

TuyaSmartSweeperKit 3.2.4

Maintained by xcc, misaka, jianghong, 71, tuya_developer.



 
Depends on:
TuyaSmartUtil>= 0
TuyaSmartMQTTChannelKit>= 0
TuyaSmartDeviceCoreKit>= 0
TuyaP2pFileTransSDK>= 0
TuyaSmartP2pChannelKit>= 0
YYModel>= 0
TuyaCloudStorageSignatureTools>= 0
 

  • By
  • Tuya

iOS 激光扫地机 SDK 使用说明文档

功能概述

涂鸦智能 iOS 激光扫地机 SDK 在涂鸦智能 iOS SDK (下文简介为: Home SDK)的基础上提供了接入激光扫地机功能接口封装,加速开发过程。主要包括了以下功能:

  • 扫地机记录数据文件云配置转化
  • 扫地机实时清扫记录获取
  • 扫地机历史清扫记录获取
  • 扫地机语音下载服务

激光扫地机数据分为实时数据和历史记录数据。这两种数据都包含了地图数据和路径数据,以文件的形式存储在云端

其中实时数据的地图和路径是分别存储在不同文件内,历史数据的地图和路径是存储在同一个文件内,根据指定规则进行拆分读取地图和路径数据

快速集成

使用 Cocoapods 集成

Podfile 文件中添加以下内容:

platform :ios, '8.0'

target 'your_target_name' do

   pod 'TuyaSmartSweeperKit'
   
end

然后在项目根目录下执行 pod update 命令,集成第三方库。

CocoaPods 的使用请参考:CocoaPods Guides

头文件导入

在需要使用的地方添加

#import <TuyaSmartSweeperKit/TuyaSmartSweeperKit.h>

功能说明

主要功能类为 TuyaSmartSweeper,实现TuyaSmartSweeperDelegate 来接受文件信息变化回调

代码示例

@property (strong, nonatomic) TuyaSmartSweeper *sweeper;

- (TuyaSmartSweeper *)sweeper {
    if (!_sweeper) {
        _sweeper = [[TuyaSmartSweeper alloc] init];
        _sweeper.delegate = self;
        // 设置自动下载文件数据
        _sweeper.shouldAutoDownloadData = YES;
    }
    
    return _sweeper;
}


#pragma mark - TuyaSmartSweeperDelegate

/**
 扫地机数据通道的文件信息回调
 
 @param sweeper sweeper
 @param devId 对应数据所属设备 Id
 @param mapType (0表示地图,1表示路径)
 @param mapData 地图数据
 @param error error
 */
- (void)sweeper:(TuyaSmartSweeper *)sweeper didReciveDataWithDevId:(NSString *)devId mapType:(NSInteger)mapType mapData:(NSData *)mapData error:(NSError *)error {
    NSLog(@"data %@  ---  error: %@", mapData, error);
}

数据流程

image

初始化云配置

/**
 初始化云配置
 
 @param devId 设备id
 @param complete 成功返回文件存储的bucket信息(用来获取文件的存储url)
 */
- (void)initCloudConfigWithDevId:(NSString *)devId
                        complete:(void(^)(NSString *bucket, NSError * _Nullable error))complete;

更新云配置

由于获取到的文件地址有时效性,当文件地址失效时,需要调用以下接口更新云配置

/**
 更新云配置
 
 @param devId 设备id
 @param complete 成功返回文件存储的bucket信息
 */
- (void)updateCloudConfigWithDevId:(NSString *)devId
                          complete:(void(^)(NSString *bucket, NSError * _Nullable error))complete;

获取数据文件地址 URL

获取到文件存储的 url 后,读取文件的数据进行显示

注意:实时数据和历史数据存储在不同的bucket

/**
 获取数据文件地址
 
 @param bucket 文件存储的bucket
 @param path 文件路径
 */
- (nullable NSString *)getCloudFileUrlWithBucket:(NSString *)bucket
                                            path:(NSString *)path;

获取扫地机历史记录

/**
 获取扫地机历史记录
 
 @param devId 设备id
 @param limit 一次获取数据的数量(建议最大不要超过100)
 @param offset 获取数据的偏移量(用于分页)
 @param startTime 起始时间戳
 @param endTime 结束时间戳
 @param complete 结果回调
 */
- (void)getSweeperHistoryDataWithDevId:(NSString *)devId
                                 limit:(NSUInteger)limit
                                offset:(NSUInteger)offset
                             startTime:(long)startTime
                               endTime:(long)endTime
                              complete:(void(^)(NSArray<TuyaSmartSweeperHistoryModel *> *datas, NSUInteger totalCount, NSError * _Nullable error))complete;

// -----------------------------------------------
// 历史记录模型
@interface TuyaSmartSweeperHistoryModel : NSObject

/**
 文件 id
 */
@property (copy, nonatomic) NSString *fileId;
/**
 时间戳
 */
@property (assign, nonatomic) long time;

/**
 文件拆分读取规则 (json字符串)
 */
@property (copy, nonatomic) NSString *extend;

/**
 文件存储的bucket
 */
@property (copy, nonatomic) NSString *bucket;

/**
 文件路径
 */
@property (copy, nonatomic) NSString *file;

@end

获取数据内容

备注:oss 错误分析:https://help.aliyun.com/document_detail/32005.html?spm=a2c4g.11186623.6.1328.609b28126VcNPW

/**
 获取数据内容

 @param bucket 文件存储的bucket
 @param path 文件路径
 @param complete 数据回调
 */
- (void)getSweeperDataWithBucket:(NSString *)bucket
                            path:(NSString *)path
                        complete:(void(^)(NSData *data, NSError * _Nullable error))complete;

获取实时的地图存储路径和路径存储路径

根据 devId 查询当前设备的实时地图/路径文件地址,获取到的路径通过 [- (void)getSweeperDataWithBucket:] 方法下载完整数据。

/**
 获取实时的地图存储路径和路径存储路径

 @param devId 设备 id
 @param complete 结果回调
 */
- (void)getSweeperCurrentPathWithDevId:(NSString *)devId
                              complete:(void(^)(NSString *mapPath, NSString *routePath, NSError * _Nullable error))complete;

删除扫地机历史记录

/**
 删除扫地机历史记录

 @param devId 设备 id
 @param fileIds 文件 id 数组
 @param complete 结果回调
 */
- (void)removeSweeperHistoryDataWithDevId:(NSString *)devId
                                  fileIds:(NSArray<NSString *> *)fileIds
                                 complete:(void (^)(NSError * _Nullable error))complete;

删除全部历史记录

/**
 删除当前扫地机所有历史记录

 @param devId 设备 id
 @param complete 结果回调
 */
- (void)removeAllHistoryDataWithDevId:(NSString *)devId
                             complete:(void (^)(NSError * _Nullable error))complete;

语音下载服务

功能说明

主要功能类为 TuyaSmartFileDownload,实现 TuyaSmartFileDownloadDelegate 来接收语音下载过程中的状态变化回调以及下载进度回调

- (TuyaSmartFileDownload *)fileDownloader {
    if (!_fileDownloader) {
        _fileDownloader = [TuyaSmartFileDownload fileDownloadWithDeviceId:@"<#devId#>"];
        _fileDownloader.delegate = self;
    }
    return _fileDownloader;
}


#pragma mark - TuyaSmartFileDownloadDelegate
/**
 文件下载状态

 @param fileDownload instance
 @param type 文件类型
 @param status 状态
 */
- (void)fileDownloadUpgrade:(TuyaSmartFileDownload *)fileDownload type:(NSString *)type status:(TuyaSmartFileDownloadStatus)status {
    NSLog(@"[LOG] %s: %@ status:%@", __PRETTY_FUNCTION__, type, @(status));
}

/**
 文件下载进度

 @param fileDownload instance
 @param type 文件类型
 @param progress 下载进度
 */
- (void)fileDownloadUpgrade:(TuyaSmartFileDownload *)fileDownload type:(NSString *)type progress:(int)progress {
    NSLog(@"[LOG] %s: %@ status:%@", __PRETTY_FUNCTION__, type, @(progress));
}

下载流程

image2

获取下载信息

/**
 获取文件信息
 
 @param success 成功回调
 @param failure 失败回调
 */
- (void)getFileDownloadInfoWithSuccess:(nullable void (^)(NSArray<TuyaSmartFileDownloadModel *> *upgradeFileList))success
                               failure:(nullable TYFailureError)failure;

请求下载文件指令,设备开始下载文件

/**
 下发下载文件指令,设备开始下载文件, 升级成功或失败会通过 TuyaSmartFileDownloadDelegate 返回
 
 @param fileId  fileId of `TuyaSmartFileDownloadModel`
 @param success 成功回调 (status 0:未下载  1:下载中)
 @param failure 失败回调
 */
- (void)downloadFileWithFileId:(NSString *)fileId
                       success:(nullable TYSuccessID)success
                       failure:(nullable TYFailureError)failure;

获取文件下载进度

/**
 获取文件下载进度
 
 @param success 成功回调
 @param failure 失败回调
 */
- (void)getFileDownloadRateWithSuccess:(nullable void (^)(TuyaSmartFileDownloadRateModel *rateModel))success
                               failure:(nullable TYFailureError)failure;

下载信息回调

下发下载指令之后,设备开始下载,并且会通过 mqtt 将实时信息上报回来,通过下面这个代理方法可以接受设备下载的实时状态回调:

/**
 文件下载状态

 @param fileDownload instance
 @param type 文件类型
 @param status 状态
 */
- (void)fileDownloadUpgrade:(TuyaSmartFileDownload *)fileDownload type:(NSString *)type status:(TuyaSmartFileDownloadStatus)status;

根据上面的代理方法中的 (TuyaSmartFileDownloadStatus)status 来判断,若 status 的值为 TuyaSmartFileDownloadStatusUpgrading, 则触发该代理方法,获取下载进度

/**
 文件下载进度

 @param fileDownload instance
 @param type 文件类型
 @param progress 下载进度
 */
- (void)fileDownloadUpgrade:(TuyaSmartFileDownload *)fileDownload type:(NSString *)type progress:(int)progress;

下载文件数据模型

@interface TuyaSmartFileDownloadModel : NSObject

/**
 文件 id
 */
@property (copy, nonatomic) NSString *fileId;
/**
 产品 id
 */
@property (copy, nonatomic) NSString *productId;
/**
 文件名称
 */
@property (copy, nonatomic) NSString *name;
/**
 文件描述
 */
@property (copy, nonatomic) NSString *desc;
/**
 文件url
 */
@property (copy, nonatomic) NSString *auditionUrl;
/**
 正式文件url
 */
@property (copy, nonatomic) NSString *officialUrl;
/**
 文件图标url
 */
@property (copy, nonatomic) NSString *imgUrl;
/**
 区域码
 */
@property (strong, nonatomic) NSArray<NSString *> *region;

@end

下载文件的进度数据模型

@interface TuyaSmartFileDownloadRateModel : NSObject

/**
 下载文件 id
 */
@property (copy, nonatomic) NSString *fileId;
/**
 设备 id
 */
@property (copy, nonatomic) NSString *deviceId;
/**
 下载状态 0:未下载  1:下载中
 */
@property (assign, nonatomic) NSInteger status;
/**
 下载进度
 */
@property (assign, nonatomic) int rate;

@end

升级信息

0.1.3 -> 0.1.4

  • [修改] : TuyaSmartSweeperDelegate 代理方法只返回当前初始化时传入的 devId 对应的设备接受到的 MQTT消息
  • [新增] : - (void)getSweeperDataWithBucket: 根据 bucket 和 path 下载文件,complete 回调 下载内容
  • [新增] : - (void)getSweeperDataWithBucket: 解析 OSS 错误信息,并返回 NSError
  • [新增] : - (void)getSweeperCurrentPathWithDevId: 获取实时的地图/路径的文件路径
  • [新增] : - (void)removeSweeperHistoryDataWithDevId: 删除扫地机历史记录

0.1.4 -> 0.1.5

  • [修改] : 获取历史记录接口调整,会根据所属家庭的纬度区分

0.1.5 -> 0.1.6

  • [新增] : 分享设备支持查看历史记录

0.1.6 -> 0.1.7

依赖版本 pod 'TuyaSmartDeviceKit', '~> 2.8.43'

  • [修改] : 支持 bitcode
  • [修改] : - (void)getSweeperCurrentPathWithDevId: 更新云配置的逻辑
  • [新增] : - (void)removeAllHistoryDataWithDevId: 清空当前扫地机历史记录

0.1.7 -> 0.2.0

依赖版本 pod 'TuyaSmartDeviceKit', '~> 2.10.96'

  • [废弃] : -[TuyaSmartSweeperDelegate sweeper:didReciveDataWithDevId:mapType:mapPath:] 接收激光数据通道消息
  • [新增] : -[TuyaSmartSweeperDelegate sweeper:didReciveDataWithDevId:mapData:] 接收激光数据通道消息

0.2.0 -> 1.0.4

依赖最新版本的 TuyaSmartDeviceKit

  • [bugfix] : Sweeper 对象销毁时,移除 delegate

1.0.4 -> 1.0.5

依赖最新版本的 TuyaSmartDeviceKit

  • [bugfix] : 修复偶现崩溃问题

1.0.5 -> 1.0.6

依赖最新版本的 TuyaSmartDeviceKit

  • [bugfix] : 去除 log

1.0.6 -> 1.0.7

  • [新增] : 语音下载服务 TuyaSmartFileDownload
  • [bugfix] : 修复 -[TuyaSmartSweeper sweeper:didReciveDataWithDevId:] 回调当前设备的数据