文档反馈
文档反馈

通话过程控制

本章节介绍音视频通话过程中网易云信提供的各种控制功能。包括点对点通话的控制多人会议的控制通用控制

点对点通话的控制包括发送通话控制信息、设置静音、切换通话模式等

多人会议的控制包括改变自己在会议中的角色(互动者/观众)

通用控制包括是否接收某用户的音频或视频数据、设置扬声器等

点对点通话的控制

发送通话控制信息

发送通话控制信息

@protocol NIMNetCallManager <NSObject>
/**
 *  发送网络通话的控制信息,用于方便通话双方沟通信息
 *
 *  @param callID 控制信息相关通话的call id
 *  @param type   控制类型
 */
- (void)control:(UInt64)callID
           type:(NIMNetCallControlType)type;
@end
参数 类型 说明
callID UInt64 控制信息相关通话的call id
type NIMNetCallControlType 控制类型
//发送切换到音频模式控制类型
[[NIMAVChatSDK sharedSDK].netCallManager control:self.callInfo.callID type:NIMNetCallControlTypeToAudio];

收到通话控制信息回调

收到通话控制信息回调

@protocol NIMNetCallManagerDelegate <NSObject>
/**
 *  获取macOS下所有音频输入输出设备
 *
 @return 所有音频设备
 */
- (NSArray<NIMNetCallMacAudioDevice *> *)audioDevices API_UNAVAILABLE(ios);
@end             
参数 类型 说明
callID UInt64 相关网络通话的call id
user NSString 对方帐号
type NIMNetCallControlType 控制类型
- (void)onControl:(UInt64)callID
             from:(NSString *)user
             type:(NIMNetCallControlType)control{
    //收到的控制类型
    switch (control) {
        case NIMNetCallControlTypeToAudio:
            [self switchToAudio];
            break;
        case NIMNetCallControlTypeCloseVideo:
            [self.view makeToast:@"对方关闭了摄像头"
                        duration:2
                        position:CSToastPositionCenter];
            break;
        case NIMNetCallControlTypeOpenVideo:
            [self.view makeToast:@"对方开启了摄像头"
                        duration:2
                        position:CSToastPositionCenter];
            break;

        ...

        default:
            break;
    }
}

设置静音

设置静音

@protocol NIMNetCallManager <NSObject>
/**
 *  设置网络通话麦克风静音
 *
 *  @param mute 是否开启麦克风静音
 *
 *  @return 开启麦克风静音是否成功
 *
 *  @discussion 该设置不影响伴音发送, 切换网络通话类型将丢失该设置
 */
- (BOOL)setMute:(BOOL)mute;
@end
参数 类型 说明
mute BOOL 是否开启麦克风静音
//开启静音
 [[NIMAVChatSDK sharedSDK].netCallManager setMute:YES];

切换通话模式

切换通话模式,用于在语音模式和视频模式之间切换。如果需要对方接受才能切换,请使用 control:typeonConrtol:from:type 进行协商,达成一致后再调用该接口进行切换。

@protocol NIMNetCallManager <NSObject>
/**
 *  切换网络通话类型
 *
 *  @param type 通话类型
 *
 *  @discussion 切换通话类型会丢失这些设置: 静音模式, 扬声器模式, 摄像头关闭, 切换摄像头
 */
- (void)switchType:(NIMNetCallMediaType)type;
@end
参数 类型 说明
type NIMNetCallMediaType 通话类型
//切换为视频模式
[[NIMAVChatSDK sharedSDK].netCallManager switchType:NIMNetCallMediaTypeVideo];

多人通话的控制

改变自己在会议中的角色

改变自己在会议中的角色

@protocol NIMNetCallManager <NSObject>
/**
 *  改变自己在会议中的角色
 *
 *  @param actor 是否为发言者角色, 发言者发送音视频数据, 非发言者不发送音视频数据
 *
 *  @return 设置是否成功
 */
- (BOOL)setMeetingRole:(BOOL)actor;
@end
参数 类型 说明
actor BOOL 是否为发言者角色, 发言者发送音视频数据, 非发言者不发送音视频数据
//切换为发言者
[[NIMAVChatSDK sharedSDK].netCallManager setMeetingRole:YES];

通用控制

指定某用户设置是否对其静音

指定某用户设置是否对其静音

@protocol NIMNetCallManager <NSObject>
/**
 *  指定某用户设置是否对其静音
 *
 *  @param mute 是否静音, 静音后将听不到该用户的声音
 *  @param uid  用户 uid
 *
 *  @return 是否设置成功. 如果用户尚未加入, 则无法设置
 */
- (BOOL)setAudioMute:(BOOL)mute forUser:(NSString *)uid;
@end
参数 类型 说明
mute BOOL 是否静音, 静音后将听不到该用户的声音
uid NSString 用户uid
//指定用户设置对其静音
[[NIMAVChatSDK sharedSDK].netCallManager setAudioMute:YES forUser:self.uid];

指定所有远端用户是否对其静音

指定所有远端用户是否对其静音

@protocol NIMNetCallManager <NSObject>
/**
 指定所有远端用户是否对其静音

 @param mute 是否静音, 静音后将听不到所有用户的声音
 @return 是否设置成功.
 */
- (BOOL)setAllUserAudioMute:(BOOL)mute;
@end
参数 类型 说明
mute BOOL 是否静音, 静音后将听不到所有用户的声音
//指定所有远端用户是否对其静音
[[NIMAVChatSDK sharedSDK].netCallManager setAllUserAudioMute:YES];

指定某用户设置是否接收其视频

指定某用户设置是否接收其视频

@protocol NIMNetCallManager <NSObject>
/**
 *  指定某用户设置是否接收其视频
 *
 *  @param mute 是否拒绝视频, 拒绝后将没有该用户视频数据回调
 *  @param uid  用户uid
 *
 *  @return 是否设置成功. 如果用户尚未加入, 则无法设置
 */
- (BOOL)setVideoMute:(BOOL)mute forUser:(NSString *)uid;
@end
参数 类型 说明
mute BOOL 是否拒绝视频, 拒绝后将没有该用户视频数据回调
uid NSString 用户uid
//指定用户不接受其视频
[[NIMAVChatSDK sharedSDK].netCallManager setVideoMute:YES forUser:self.uid];

设置扬声器

设置扬声器

@protocol NIMNetCallManager <NSObject>
/**
 *  设置网络通话扬声器模式
 *
 *  @param useSpeaker 是否开启扬声器
 *
 *  @return 开启扬声器是否成功
 *
 *  @discussion 切换网络通话类型将丢失该设置
 */
- (BOOL)setSpeaker:(BOOL)useSpeaker;
@end
参数 类型 说明
useSpeaker BOOL 是否开启扬声器
//开启扬声器 
[[NIMAVChatSDK sharedSDK].netCallManager setSpeaker:YES];

设置距离传感器类型

设置距离传感器类型

@protocol NIMNetCallManager <NSObject>

/**
 *  设置近距离传感器类型,默认为 NIMNetCallProximityMonitoringTypeDefault
 *
 *  @param type 近距离传感器类型
 *
 *  @return 设置近距离传感器是否成功
 *
 *  @discussion 默认情况下音频模式会打开传感器,以用户设置优先
 */
- (BOOL)setProximityMonitoringType:(NIMNetCallProximityMonitoringType)type API_UNAVAILABLE(macos);

@end
参数 类型 说明
type NIMNetCallProximityMonitoringType 距离传感器类型
//关闭距离传感器
   BOOL success = [[NIMAVChatSDK sharedSDK].netCallManager setProximityMonitoringType:NIMNetCallProximityMonitoringTypeOff];
×

反馈成功

非常感谢您的反馈,我们会继续努力做得更好。