更新时间:2023-03-09 08:04:37
激光型扫地机借助 MQTT 和云存储来进行数据的传输。扫地机将地图或清扫路径以文件的形式保存在云端,其中涉及到获取云存储配置信息,接收文件上传完成的实时消息和文件下载功能。
扫地机设备所有功能对应 TuyaSmartSweeperDevice
类,需要使用设备 ID 进行初始化。错误的设备 ID 会导致初始化失败,返回 nil。
类名 | 说明 |
---|---|
TuyaSmartSweeperDevice | 扫地机设备相关的类 |
从云端获取云存储配置信息。
- (void)initCloudConfigWithSuccess:(void (^)(NSString *bucket))success
failure:(void (^)(NSError * _Nullable error))failure;
参数说明
类名 | 说明 |
---|---|
success | 成功回调,返回 bucket 文件存储空间信息 |
failure | 失败回调 |
示例代码
Objective-C:
[self.sweeperDevice initCloudConfigWithSuccess:^(NSString * _Nonnull bucket) {
} failure:^(NSError * _Nullable error) {
}];
Swift:
sweeperDevice?.initCloudConfig(success: { (bucket) in
}, failure: { (error) in
})
由于获取到的文件地址有时效性,当文件地址失效时,需要调用接口更新云存储配置。
- (void)updateCloudConfigWithSuccess:(void (^)(NSString *bucket))success
failure:(void (^)(NSError * _Nullable error))failure;
参数说明
类名 | 说明 |
---|---|
success | 成功回调,返回 bucket 文件存储空间信息 |
failure | 失败回调 |
示例代码
Objective-C:
[self.sweeperDevice updateCloudConfigWithSuccess:^(NSString * _Nonnull bucket) {
} failure:^(NSError * _Nullable error) {
}];
Swift:
sweeperDevice?.updateCloudConfig(success: { (bucket) in
}, failure: { (error) in
})
获取地图文件在存储服务器上完整的路径,您可以自行下载解析。
接口说明
- (nullable NSString *)getCloudFileDownloadURLWithBucket:(NSString *)bucket path:(NSString *)path;
参数说明
参数 | 说明 |
---|---|
bucket | 文件存储空间 |
path | 地图、清扫路径等文件的存储相对路径 |
示例代码
Objective-C:
NSString *url = [self.sweeperDevice getCloudFileDownloadURLWithBucket:<#bucket#> path:<#path#>];
Swift:
let url = sweeperDevice?.getCloudFileDownloadURL(withBucket: "", path: "")
根据地图、清扫路径等文件在云端存储的相对路径,下载文件数据。
接口说明
- (void)getSweeperDataWithBucket:(NSString *)bucket
path:(NSString *)path
success:(void (^)(NSData *data))success
failure:(void (^)(NSError * _Nullable error))failure;
参数说明
参数 | 说明 |
---|---|
bucket | 文件存储空间 |
path | 地图、清扫路径等文件等的存储相对路径 |
success | 成功回调,返回文件具体内容的 data |
failure | 失败回调 |
示例代码
Objective-C:
[self.sweeperDevice getSweeperDataWithBucket:<#bucket#> path:<#path#> success:^(NSData * _Nonnull data) {
} failure:^(NSError * _Nullable error) {
}];
Swift:
sweeperDevice?.getSweeperData(withBucket: "", path: "", success: { (data) in
}, failure: { (error) in
})
获取当前清扫中的文件(地图、清扫路径)在云端存储的相对路径。
- (void)getSweeperCurrentPathWithSuccess:(void (^)(NSString *bucket, NSDictionary<TuyaSmartSweeperCurrentPathKey, NSString *> *paths))success
failure:(void (^)(NSError * _Nullable error))failure;
参数说明
TuyaSmartSweeperCurrentPathKey | 说明 |
---|---|
TuyaSmartSweepCurrentMapPathKey | 当前地图的相对路径对应的 key |
TuyaSmartSweepCurrentRoutePathKey | 当前清扫路径的相对路径对应的 key |
参数 | 说明 |
---|---|
success | 成功回调
|
failure | 失败回调 |
示例代码
Objective-C:
[self.sweeperDevice getSweeperCurrentPathWithSuccess:^(NSString * _Nonnull bucket, NSDictionary<TuyaSmartSweeperCurrentPathKey,NSString *> * _Nonnull paths) {
NSString *mapPath = paths[TuyaSmartSweepCurrentMapPathKey];
NSString *routePath = paths[TuyaSmartSweepCurrentRoutePathKey];
} failure:^(NSError * _Nullable error) {
}];
Swift:
sweeperDevice?.getSweeperCurrentPath(success: { (bucket, paths) in
let mapPath = paths[TuyaSmartSweepCurrentMapPathKey]
let routePath = paths[TuyaSmartSweepCurrentRoutePathKey]
}, failure: { (error) in
})
从云端获取激光型扫地机的历史清扫记录。
接口说明
- (void)getSweeperHistoryDataWithLimit:(NSUInteger)limit
offset:(NSUInteger)offset
startTime:(long)startTime
endTime:(long)endTime
success:(void (^)(NSArray<TuyaSmartSweeperHistoryModel *> *datas, NSUInteger totalCount))success
failure:(void (^)(NSError * _Nullable error))failure;
参数说明
类名 | 说明 |
---|---|
TuyaSmartSweeperHistoryModel | 历史清扫记录 |
属性 | 类型 | 说明 |
---|---|---|
fileId | NSString | 清扫记录文件 ID |
time | long | 清扫记录文件时间戳 |
extend | NSString | 清扫记录拆分读取规则 |
bucket | NSString | 清扫记录文件的存储空间 |
file | NSString | 清扫记录文件存储的相对路径 |
参数 | 说明 |
---|---|
limit | 一次获取数据的数量,建议最大不要超过 100 |
offset | 获取数据的偏移量,用于分页 |
startTime | 起始时间戳,默认不传 |
endTime | 结束时间戳,默认不传 |
success | 成功回调,返回清扫记录数组的 datas 和历史清扫记录总数 totalCount |
failure | 失败回调 |
示例代码
Objective-C:
[self.sweeperDevice getSweeperHistoryDataWithLimit:50 offset:0 startTime:-1 endTime:-1 success:^(NSArray<TuyaSmartSweeperHistoryModel *> * _Nonnull datas, NSUInteger totalCount) {
} failure:^(NSError * _Nullable error) {
}];
Swift:
sweeperDevice?.getSweeperHistoryData(withLimit: 50, offset: 0, success: { (datas, count) in
}, failure: { (error) in
})
删除当前激光型扫地机设备指定的历史清扫记录。最多可以删除 100 条记录。
接口说明
- (void)removeSweeperHistoryDataWithFileIds:(NSArray<NSString *> *)fileIds
success:(void (^)(void))success
failure:(void (^)(NSError * _Nullable error))failure;
参数说明
参数 | 说明 |
---|---|
fileIds | 清扫记录文件 ID 的字符串数组 |
success | 成功回调 |
failure | 失败回调 |
示例代码
Objective-C:
[self.sweeperDevice removeSweeperHistoryDataWithFileIds:<#fileIds#> success:^{
} failure:^(NSError * _Nullable error) {
}];
Swift:
sweeperDevice?.removeSweeperHistoryData(withFileIds: [""], success: {
}, failure: { (error) in
})
针对激光型扫地机一次清扫记录有多个地图的情况,提供从云端获取多地图的历史清扫记录。
接口说明
- (void)getSweeperMultiHistoryDataWithLimit:(NSUInteger)limit
offset:(NSUInteger)offset
startTime:(long)startTime
endTime:(long)endTime
success:(void(^)(NSArray<TuyaSmartSweeperHistoryModel *> *datas, NSUInteger totalCount))success
failure:(void(^)(NSError * _Nullable error))failure;
参数说明
参数 | 说明 |
---|---|
limit | 一次获取数据的数量,建议最大不要超过 100 |
offset | 获取数据的偏移量,用于分页 |
startTime | 起始时间戳,默认不传 |
endTime | 结束时间戳,默认不传 |
success | 成功回调,返回清扫记录数组的 datas 和历史清扫记录总数 totalCount |
failure | 失败回调 |
示例代码
Objective-C:
[self.sweeperDevice getSweeperMultiHistoryDataWithLimit:50 offset:0 startTime:-1 endTime:-1 success:^(NSArray<TuyaSmartSweeperHistoryModel *> * _Nonnull datas, NSUInteger totalCount) {
} failure:^(NSError * _Nullable error) {
}];
Swift:
sweeperDevice?.getSweeperMultiHistoryData(withLimit: 50, offset: 0, success: { (datas, count) in
}, failure: { (error) in
})
针对激光型扫地机一次清扫记录有多个地图的情况,可以使用多楼层地图命名的接口。
接口说明
- (void)sweeperFileNameUpdateWithFileId:(NSNumber *)fileId
fileName:(NSString *)fileName
success:(void (^)(id result))success
failure:(void (^)(NSError * _Nullable error))failure;
参数说明
参数 | 说明 |
---|---|
fileId | 地图 ID |
fileName | 地图名称 |
success | 成功回调 |
failure | 失败回调 |
示例代码
Objective-C:
[self.sweeperDevice sweeperFileNameUpdateWithFileId:@1 fileName:@"" success:^(id _Nonnull result) {
} failure:^(NSError * _Nullable error) {
}];
Swift:
sweeperDevice?.sweeperFileNameUpdate(withFileId: 1, fileName: "", success: { (success) in
}, failure: { (error) in
})
2.2.1 以后的扫地机 SDK 版本将会下架此功能,请使用 P2P 获取实时数据。
激光型扫地机在工作中,实时地图或清扫路径数据上传到 OSS/S3 完成的消息回调。通过设置 TuyaSmartSweeperDeviceDelegate
代理协议,监听实时消息回调。
MQTT 通知消息数据模型
类名 | 说明 |
---|---|
TuyaSmartSweeperMQTTMessage | 设备上传完文件发送的 mqtt 通知消息 |
属性 | 类型 | 说明 |
---|---|---|
mapId | NSString | 文件(地图、清扫路径)id |
mapType | TuyaSmartSweeperMQTTMessageType | 文件类型。0:地图。1:路径 |
mapPath | NSString | 文件(地图、清扫路径)存储的相对路径 |
设备上传完文件之后的消息回调:
- (void)sweeperDevice:(TuyaSmartSweeperDevice *)sweeperDevice didReceiveMessage:(TuyaSmartSweeperMQTTMessage *)message;
参数说明
参数 | 说明 |
---|---|
sweeperDevice | 扫地机设备实例 |
message | 设备上传完成后,推送的 MQTT 消息 |
示例代码
Objective-C:
self.sweeperDevice = [TuyaSmartSweeperDevice deviceWithDeviceId:<#devId#>];
self.sweeperDevice.delegate = self;
// 实现代理方法
- (void)sweeperDevice:(TuyaSmartSweeperDevice *)sweeperDevice didReceiveMessage:(TuyaSmartSweeperMQTTMessage *)message {
}
Swift:
sweeperDevice = TuyaSmartSweeperDevice.init(deviceId: "your_devId")
sweeperDevice?.delegate = self
func sweeperDevice(_ sweeperDevice: TuyaSmartSweeperDevice, didReceive message: TuyaSmartSweeperMQTTMessage) {
}
2.2.1 以后的扫地机 SDK 版本将会下架此功能,请使用 P2P 获取实时数据。
设备上传完文件之后的消息回调,设置 shouldAutoDownloadData
为 YES
后,触发该回调下载文件内容。
- (void)sweeperDevice:(TuyaSmartSweeperDevice *)sweeperDevice didReceiveMessage:(TuyaSmartSweeperMQTTMessage *)message downloadData:(nullable NSData *)data downloadError:(nullable NSError *)error;
参数说明
参数 | 说明 |
---|---|
sweeperDevice | 扫地机设备实例 |
message | 设备上传完成后,推送的 MQTT 消息 |
data | 文件下载后 NSData 类型的具体内容 |
error | 文件下载出错的错误信息 |
示例代码
Objective-C:
self.sweeperDevice = [TuyaSmartSweeperDevice deviceWithDeviceId:<#devId#>];
self.sweeperDevice.delegate = self;
// 实现代理方法
- (void)sweeperDevice:(TuyaSmartSweeperDevice *)sweeperDevice didReceiveMessage:(TuyaSmartSweeperMQTTMessage *)message downloadData:(nullable NSData *)data downloadError:(nullable NSError *)error {
}
Swift:
sweeperDevice = TuyaSmartSweeperDevice.init(deviceId: "your_devId")
sweeperDevice?.delegate = self
func sweeperDevice(_ sweeperDevice: TuyaSmartSweeperDevice, didReceive message: TuyaSmartSweeperMQTTMessage, downloadData data: Data?, downloadError error: Error?) {
}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈