跳到主要内容

双向对讲

更新时间:2025-07-04 11:30:46

语音通话

双向对讲只在直播时可用

双向对讲接口同【通用版-双向对讲】类似,只是在构建RTCXPlayInfo通话对象时,需要设置RTCXPlayInfo.deviceType = 1,即私有化设备

// 导入SDK头文件
#import <RTCXMedia/RTCXMedia.h>
typedef NS_ENUM(NSInteger, RTCXAudioVideoTalkType) {
RTCXAudioVideoTalkType_Audio, // 音频通话
RTCXAudioVideoTalkType_Video, // 视频通话
};

@protocol RTCXAudioVideoTalkDelegate <NSObject>
- (void)audioVideoTalk:(RTCXAudioVideoTalk *)audioVideoTalk didFailToAudioVideoTalkWithError:(NSError *)error;
@end

@protocol RTCXAudioVideoTalkInterface <NSObject>

/**
初始化对象
@param deviceInfo 设备信息
@param avTalkType 音频、视频通话话类型
@param delegate 代理对象
*/
- (id)initWithDeviceInfo:(RTCXPlayInfo *)deviceInfo avTalkType:(RTCXAudioVideoTalkType)avTalkType delegate:(id<RTCXAudioVideoTalkDelegate>)delegate;
/**
开始通话
*/
- (void)startTalk;
/**
结束通话
*/
- (void)endTalk;
@end

调用示例如下:

// 初始化音频通话引擎
-(RTCXAudioVideoTalk *)audioTalkEngin {
if (_audioTalkEngin == nil) {
RTCXPlayInfo *deviceInfo = [[RTCXPlayInfo alloc] init];
deviceInfo.iotId = self.curDevice.iotId;
deviceInfo.productKey = self.curDevice.productKey;
deviceInfo.deviceName = self.curDevice.deviceName;
deviceInfo.deviceType = 1;
_audioTalkEngin = [[RTCXAudioVideoTalk alloc] initWithDeviceInfo:deviceInfo avTalkType:RTCXAudioVideoTalkType_Audio delegate:self];
}
return _audioTalkEngin;
}
// 开始音频通话
[self.audioTalkEngin startTalk];
// 结束音频通话
[self.audioTalkEngin endTalk];

#pragma mark -- RTCXAudioVideoTalkDelegate --
- (void)audioVideoTalk:(RTCXAudioVideoTalk *)audioVideoTalk didFailToAudioVideoTalkWithError:(NSError *)error {
// code: -10023代表对讲通道被占用
[self showToast:[NSString stringWithFormat:@"%ld : %@",error.code,error.userInfo[NSLocalizedFailureReasonErrorKey]]];
if (self.isAudioTalking) {
[self functionAudioTalk:NO];// 停止对讲
}
}

备注:当didFailToAudioVideoTalkWithError:回调error.code = -10023时,代表当前语音对讲通道被其他端占用,应结束对讲。