云可视对讲

更新时间:2022-02-17 06:50:20下载pdf

云可视对讲功能,是指App和云可视设备(例如监控、门禁)相互通信。该功能需要配合涂鸦 智能生活 IPC SDK 一起使用。

功能说明

监控设备接入流程

利用云可视管理类,加载配置项,在成功回调里,初始化涂鸦摄像机,直接连接视频流进行实时查看即可。

门禁设备接入流程

  1. TuyaCommunityVisualSpeakManager 添加代理。

  2. 当收到设备消息时,会触发 receiveDeviceMessageWithType: messageModel: 代理方法。然后,在代理方法中,需先加载配置项,在成功回调中用摄像机去连接视频,进行预览。

  3. 预览成功后,去连接音频,进行对讲。

IPC SDK 对接

IPC SDK 建议接入版本如下:

pod 'TuyaSmartCameraKit', '4.28.5.2'

云可视管理类

主要管理设备的配置项,及设备通信回调。

类名 说明
TuyaCommunityVisualSpeakManager 云可视管理类,单例类
TuyaCommunityVisualSpeakManagerDelegate 收到云可视设备消息回调(呼叫、接听、挂断等)

加载配置项

查看视频或者接听设备呼叫时,需要先加载一下配置项,然后再做后续操作。

接口说明

- (void)loadConfigWithDeviceId:(NSString *)deviceId
                     gatewayId:(nullable NSString *)gatewayId
                       success:(void(^)(void))success
                       failure:(void(^)(NSError *error))failure;

请求参数

参数 说明
deviceId 设备 ID
gatewayId 网关 ID(非必传),如果设备挂在网关下,需传此值
success 成功回调
failure 失败回调

示例代码

[TuyaCommunityVisualSpeakManager.shareInstance loadConfigWithDeviceId:@"device_id" gatewayId:@"gateway_id" success:^{
        NSLog(@"load config success");
    } failure:^(NSError * _Nonnull error) {
        NSLog(@"load config error: %@", error.localizedDescription);
    }];

添加代理

为云可视管理类添加代理,用来实现通信协议。

接口说明

- (void)addDelegate:(id<TuyaCommunityVisualSpeakManagerDelegate>)delegate;

移除代理

当不需要时,移除代理。

接口说明

- (void)removeDelegate:(id<TuyaCommunityVisualSpeakManagerDelegate>)delegate;

代理方法

和设备通信过程中,当收到设备消息时,会在下面代理方法中回调。

接口说明

- (void)receiveDeviceMessageWithMessageModel:(TuyaCommunityVisualSpeakDeviceMessageModel *)messageModel;

TuyaCommunityVisualSpeakDeviceMessageModel 数据模型

属性 说明
deviceId 设备 ID
roomId 房号 ID
type 通信类型, TuyaCommunityVisualSpeakCommunicationType 枚举类
reqType 呼叫类型
sn 通话唯一识别号

TuyaCommunityVisualSpeakCommunicationType 枚举类

类型 说明
TuyaCommunityVisualSpeakCommunicationTypeUnknow 未知错误
TuyaCommunityVisualSpeakCommunicationTypeCalling 呼叫中
TuyaCommunityVisualSpeakCommunicationTypeDeviceHungUp 设备主动挂断
TuyaCommunityVisualSpeakCommunicationTypeCallTimeoutHungUp 呼叫超时挂断
TuyaCommunityVisualSpeakCommunicationTypeCallPassiveHungUp 被动挂断
TuyaCommunityVisualSpeakCommunicationTypeAnswer 设备被接听
TuyaCommunityVisualSpeakCommunicationTypeTimeOutHungUp 通话超时自动挂断

示例代码

- (void)viewDidLoad {
    [super viewDidLoad];
    [TuyaCommunityVisualSpeakManager.shareInstance addDelegate:self];
}

#pragma mark - TuyaCommunityVisualSpeakManagerDelegate

- (void)receiveDeviceMessageWithMessageModel:(TuyaCommunityVisualSpeakDeviceMessageModel *)messageModel {
    // 收到设备通信信息,根据model.type做相应处理
}

监控设备

通过 App 去查看安装在公共区域的监控设备。

类说明

类名 说明
TuyaCommunityPublicMonitorService 公区监控服务类
TuyaCommunityPublicMonitorModel 公区监控数据模型

TuyaCommunityPublicMonitorModel 数据模型

字段 说明
deviceId 设备 ID
deviceName 设备名称
deviceThumbnailsUrl 设备封面图
deviceStatus 设备状态
gatewayId 网关 ID

获取公区监控列表

通过此API查看用户有权限查看的公区监控设备。

接口说明

- (void)getPublicMonitorListWithCommunityId:(NSString *)communityId
                                     roomId:(NSString *)roomId
                                    success:(void(^)(NSArray<TuyaCommunityPublicMonitorModel *> *list))success
                                    failure:(void(^)(NSError *error))failure;

请求参数

参数 说明
communityId 小区 ID
roomId 房号 ID
success 成功回调
failure 失败回调

示例代码

[self.publicMonitorService getPublicMonitorListWithCommunityId:@"community_id" roomId:@"room_id" success:^(NSArray<TuyaCommunityPublicMonitorModel *> * _Nonnull list) {
        NSLog(@"get public monitor list success");
    } failure:^(NSError * _Nonnull error) {
        NSLog(@"get public monitor list failure: %@", error.localizedDescription);
    }];

可视门禁

对于可视门禁,有两个功能:

  • 主动查看视频:App可以主动去查看门禁视频,且可以开门。
  • 收到设备呼叫:设备呼叫房号时,App会收到呼叫,可以进行开门和通话。
类名 说明
TuyaCommunityAccessControlService 门禁服务类
TuyaCommunityAccessControlModel 门禁数据模型

TuyaCommunityAccessControlModel 数据模型

字段 说明
deviceId 设备 ID
deviceName 设备名称
roomId 房号 ID
deviceStatus 设备状态
deviceType 设备类型,TuyaCommunityVisualSpeakDeviceType枚举类

TuyaCommunityVisualSpeakDeviceType 说明

字段 说明
TuyaCommunityVisualSpeakDeviceTypeAccessControl 门禁
TuyaCommunityVisualSpeakDeviceTypePublicMonitor 公区监控
TuyaCommunityVisualSpeakDeviceTypeCentralMachine 中心机

查看门禁列表

通过此接口查看用户有权限的门禁设备列表。

接口说明

- (void)getAccessControlListWithCommunityId:(NSString *)communityId
                                     roomId:(NSString *)roomId
                                    success:(void(^)(NSArray<TuyaCommunityAccessControlModel *> *list))success
                                    failure:(void(^)(NSError *error))failure;

请求参数

参数 说明
communityId 小区 ID
roomId 房号 ID
success 成功回调
failure 失败回调

示例代码

[self.accessControlService getAccessControlListWithCommunityId:@"community_id" roomId:@"room_id" success:^(NSArray<TuyaCommunityAccessControlModel *> * _Nonnull list) {
        NSLog@(@"get access control list success");
    } failure:^(NSError * _Nonnull error) {
        NSLog(@"get access control list error: %@", error.localizedDescription);
    }];

查看门禁可查看次数

平台端可以配置用户可查看门禁次数,通过此接口查看剩余可查看次数。

接口说明

- (void)getAccessControlViewableTimesWithCommunityId:(NSString *)communityId
                                              roomId:(NSString *)roomId
                                            deviceId:(NSString *)deviceId
                                             success:(void(^)(int number))success
                                             failure:(void(^)(NSError *error))failure;

请求参数

参数 说明
communityId 小区 ID
roomId 房号 ID
deviceId 设备 ID
success 成功回调
failure 失败回调

示例代码

[self.accessControlService getAccessControlViewableTimesWithCommunityId:@"community_id" roomId:@"room_id" deviceId:@"device_id" success:^(int number) {
        NSLog(@"get access control viewable times success");
    } failure:^(NSError * _Nonnull error) {
        NSLog(@"get access control viewable times failure: %@", error.localizedDescription);
    }];

查看门禁状态

当收到呼叫时,可以通过此接口去判断门禁状态,如果空闲时,可以直接去连接通话。

接口说明

- (void)getAccessControlStatusWithCommunityId:(NSString *)communityId
                                       roomId:(NSString *)roomId
                                     deviceId:(NSString *)deviceId
                                           sn:(NSString *)sn
                                      success:(void(^)(TuyaCommunityVisualSpeakCommunicationType type))success
                                      failure:(void(^)(NSError *error))failure;

请求参数

参数 说明
communityId 小区 ID
roomId 房号 ID
deviceId 设备 ID
sn 通话唯一识别号
success 成功回调
failure 失败回调

示例代码

[self.accessControlService getAccessControlStatusWithCommunityId:@"community_id" roomId:@"room_id" deviceId:@"device_id" sn:@"sn" success:^(TuyaCommunityVisualSpeakCommunicationType type) {
        NSLog(@"get access control status success");
    } failure:^(NSError * _Nonnull error) {
        NSLog(@"get access control status failure: %@", error.localizedDescription);
    }];

开门

调用此接口可以进行开门。

接口说明

- (void)openDoorWithCommunityId:(NSString *)communityId
                         roomId:(NSString *)roomId
                       deviceId:(NSString *)deviceId
                        success:(void(^)(id result))success
                        failure:(void(^)(NSError *error))failure;

请求参数

参数 说明
communityId 小区 ID
roomId 房号 ID
deviceId 设备 ID
success 成功回调
failure 失败回调

示例代码

[self.accessControlService openDoorWithCommunityId:@"community_id" roomId:@"room_id" deviceId:@"device_id" success:^(id  _Nonnull result) {
        NSLog(@"open door success");
    } failure:^(NSError * _Nonnull error) {
        NSLog(@"open door failure: %@", error.localizedDescription);
    }];

拒接门禁呼叫

当用户收到门禁呼叫时,可以直接拒接。

接口说明

- (void)rejectWithCommunityId:(NSString *)communityId
                       roomId:(NSString *)roomId
                     deviceId:(NSString *)deviceId
                           sn:(NSString *)sn
                      success:(void(^)(id result))success
                      failure:(void(^)(NSError *error))failure

请求参数

参数 说明
communityId 小区 ID
roomId 房号 ID
deviceId 设备 ID
sn 通话唯一识别号
success 成功回调
failure 失败回调

示例代码

[self.accessControlService rejectWithCommunityId:@"community_id" roomId:@"room_id" deviceId:@"device_id" sn:@"sn" success:^(id  _Nonnull result) {
        NSLog(@"reject success");
    } failure:^(NSError * _Nonnull error) {
        NSLog(@"reject failure: %@", error.localizedDescription);
    }];

接听门禁呼叫

当用户收到设备呼叫时,调用此接口进行接听。

接口说明

- (void)acceptWithDeviceId:(NSString *)deviceId
                   success:(nullable void(^)(void))success
                   failure:(nullable void(^)(NSError *error))failure;

请求参数

参数 说明
deviceId 设备 ID
success 成功回调
failure 失败回调

示例代码

[self.accessControlService acceptWithDeviceId:@"device_id" success:nil failure:nil];

挂断门禁呼叫

和门禁通话中,可以通过此接口进行挂断。

接口说明

- (void)hangUpWithDeviceId:(NSString *)deviceId
                   success:(nullable void(^)(void))success
                   failure:(nullable void(^)(NSError *error))failure;

请求参数

参数 说明
deviceId 设备 ID
success 成功回调
failure 失败回调

示例代码

[self.service hangUpWithDeviceId:"device_id" success:nil failure:nil];

记录通话时长

调用此接口可以记录用户的通话时长。

接口说明

- (void)recordTimeWithCommunityId:(NSString *)communityId
                           roomId:(NSString *)roomId
                         deviceId:(NSString *)deviceId
                         callTime:(long long)callTime
                         talkTime:(NSInteger)talkTime
                        direction:(NSInteger)direction
                          success:(nullable void(^)(void))success
                          failure:(nullable void(^)(NSError *error))failure;

请求参数

参数 说明
communityId 小区 ID
roomId 房号 ID
deviceId 设备 ID
callTime 呼叫时间,单位毫秒
talkTime 通话时长,单位秒
direction 呼叫方向,传 1
success 成功回调
failure 失败回调

示例代码

[self.accessControlService recordTimeWithCommunityId:"community_id" roomId:@"room_id" deviceId:@"device_id" callTime:1629890889000 talkTime:10 direction:1 success:^{
        NSLog(@"record time success");
    } failure:^(NSError * _Nonnull error) {
        NSLog(@"record time failure: %@", error.localizedDescription);
    }];