扫地机 P2P

更新时间:2023-06-05 02:49:29下载pdf

扫地机 P2P(Peer-to-Peer)能力提供 P2P 下载通道来获取扫地机上的地图和清扫路线数据。由于数据直接来源于设备点对点的直传,所以无需将实时地图与数据上传至云存储服务器再下载,从而达到数据传输速度更快,更节省云存储成本的目的。

获取扫地机实例对象

示例代码

Objective C:

ThingSmartSweeperDevice *sweeper = [[ThingSmartSweeperDevice alloc] initWithDeviceId:@"devId"]

Swift:

sweeper = ThingSmartSweeperDevice.init(deviceId: "devId")

连接扫地机 P2P 服务

- (void)connectDeviceByP2P:(void (^)(void))success
                   failure:(void (^)(NSError * _Nullable error))failure;

参数说明

参数 说明
success 建立 P2P 连接成功回调
failure 建立 P2P 连接失败回调

示例代码

Objective C:

[self.sweeper connectDeviceByP2P:^{

} failure:^(NSError * _Nullable error) {

}];

Swift:

sweeper?.connect(byP2P: {

}, failure: { error in

})

开启扫地机 P2P 数据下载

保证在 connectDeviceByP2P 回调成功后,开启文件传输。传输过程中发生通道异常断开时,会有 failure 的错误回调,回调错误码可参考下文 错误码。发生错误回调后说明设备可能出现网络异常,可重新调用 connectDeviceByP2P 接口尝试重连设备。

- (void)startObserverSweeperDataByP2P:(ThingSmartSweeperP2PDownloadType)downloadType
                       receiveP2PData:(void (^)(NSDictionary *data))receiveP2PData
                              failure:(void (^)(NSError * _Nullable error))failure;

参数说明

参数 说明
downloadType P2P 数据交换方式
  • ThingSmartSweeperP2PDownloadTypeOnce 表示下载完当前设备的数据就会停止后续产生数据的下载
  • ThingSmartSweeperP2PDownloadTypeStill 表示持续下载设备产生的数据,直到设备自动停止发送数据
receiveP2PData P2P 数据下载回调,返回 16 进制数据
failure P2P 数据下载失败回调

回调说明

参数 说明
type 数据类型,取值:
  • 0:地图数据
  • 1:清扫路径数据
  • 3:导航路径数据
  • -1:错误数据
data P2P 数据

示例代码

Objective C:

[self.sweeper startObserverSweeperDataByP2P:downloadType receiveP2PData:^(NSDictionary * _Nonnull data) {
        if (data) {
            NSLog(@"%@",data);
        }
} failure:^(NSError * _Nullable error) {

}];

Swift:

sweeper?.startObserverSweeperData(byP2P: ThingSmartSweeperP2PDownloadType.still, receiveP2PData: { data in

}, failure: { error in

})

检查 P2P 通道状态

检查 P2P 通道的连接状态。返回成功,则表示当前连接正常。返回失败,则表示设备异常断开,可尝试调用 connectDeviceByP2P 重连。

- (BOOL)P2PActiveCheck;

关闭扫地机 P2P 数据下载

暂停 P2P 数据传输,不断开 P2P 通道,可重新使用 startObserverSweeperDataByP2P 接口继续下载。

- (void)stopObserverSweeperDataByP2P:(void (^)(void))success
                             failure:(void (^)(NSError * _Nullable error))failure;

参数说明

参数 说明
success 关闭 P2P 数据下载成功回调
failure 关闭 P2P 数据下载失败回调

示例代码

Objective C:

[self.sweeper stopObserverSweeperDataByP2P:^{

} failure:^(NSError * _Nullable error) {

}];

Swift:

sweeper?.stopObserverSweeperData(byP2P: {

}, failure: { error in

})

关闭扫地机 P2P 服务

停止下载,并销毁通道,释放占用的内存资源和线程资源。

示例代码

Objective C:

[self.sweeper onDestroyP2P];

Swift:

sweeper?.onDestroyP2P()

停止 P2P 重连机制

当在前台会话断开,和在后台会话断开进入前台时,P2P SDK 会进行自动重连。您可以调用此方法停止自动重连,由外部控制重连时机。

- (void)connectDeviceByP2P:(BOOL)isStopReconnect success:(void (^)(void))success failure:(void (^)(NSError * _Nullable error))failure;

示例代码

[self.sweeper connectDeviceByP2P:NO success:^{

} failure:^(NSError * _Nullable error) {

}];

错误码

错误码 说明
-9000 设备信息异常
-9001 未引入 SDK 依赖
-9002 正在连接 P2P
-9003 设备离线
-9004 超时
-9005 无地图文件
-9006 P2P 连接断开

更多错误码,请参考 IPC SDK 错误码