通话过程控制
本章节介绍音视频通话过程中网易云信提供的各种控制功能。包括点对点通话的控制、多人会议的控制和通用控制。
点对点通话的控制包括发送通话控制信息、设置静音、切换通话模式等
多人会议的控制包括改变自己在会议中的角色(互动者/观众)
通用控制包括是否接收某用户的音频或视频数据、设置扬声器等
点对点通话的控制
发送通话控制信息
- API介绍
发送通话控制信息
- API原型
@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];
收到通话控制信息回调
- API介绍
收到通话控制信息回调
- API原型
@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;
}
}
设置静音
- API介绍
设置静音
- API原型
@protocol NIMNetCallManager <NSObject>
/**
* 设置网络通话麦克风静音
*
* @param mute 是否开启麦克风静音
*
* @return 开启麦克风静音是否成功
*
* @discussion 该设置不影响伴音发送, 切换网络通话类型将丢失该设置
*/
- (BOOL)setMute:(BOOL)mute;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
mute | BOOL | 是否开启麦克风静音 |
- 示例
//开启静音
[[NIMAVChatSDK sharedSDK].netCallManager setMute:YES];
切换通话模式
- API介绍
切换通话模式,用于在语音模式和视频模式之间切换。如果需要对方接受才能切换,请使用 control:type
和 onConrtol:from:type
进行协商,达成一致后再调用该接口进行切换。
- API原型
@protocol NIMNetCallManager <NSObject>
/**
* 切换网络通话类型
*
* @param type 通话类型
*
* @discussion 切换通话类型会丢失这些设置: 静音模式, 扬声器模式, 摄像头关闭, 切换摄像头
*/
- (void)switchType:(NIMNetCallMediaType)type;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
type | NIMNetCallMediaType | 通话类型 |
- 示例
//切换为视频模式
[[NIMAVChatSDK sharedSDK].netCallManager switchType:NIMNetCallMediaTypeVideo];
多人通话的控制
改变自己在会议中的角色
- API介绍
改变自己在会议中的角色
- API原型
@protocol NIMNetCallManager <NSObject>
/**
* 改变自己在会议中的角色
*
* @param actor 是否为发言者角色, 发言者发送音视频数据, 非发言者不发送音视频数据
*
* @return 设置是否成功
*/
- (BOOL)setMeetingRole:(BOOL)actor;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
actor | BOOL | 是否为发言者角色, 发言者发送音视频数据, 非发言者不发送音视频数据 |
- 示例
//切换为发言者
[[NIMAVChatSDK sharedSDK].netCallManager setMeetingRole:YES];
通用控制
指定某用户设置是否对其静音
- API介绍
指定某用户设置是否对其静音
- API原型
@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];
指定所有远端用户是否对其静音
- API介绍
指定所有远端用户是否对其静音
- API原型
@protocol NIMNetCallManager <NSObject>
/**
指定所有远端用户是否对其静音
@param mute 是否静音, 静音后将听不到所有用户的声音
@return 是否设置成功.
*/
- (BOOL)setAllUserAudioMute:(BOOL)mute;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
mute | BOOL | 是否静音, 静音后将听不到所有用户的声音 |
- 示例
//指定所有远端用户是否对其静音
[[NIMAVChatSDK sharedSDK].netCallManager setAllUserAudioMute:YES];
指定某用户设置是否接收其视频
- API介绍
指定某用户设置是否接收其视频
- API原型
@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];
设置扬声器
- API介绍
设置扬声器
- API原型
@protocol NIMNetCallManager <NSObject>
/**
* 设置网络通话扬声器模式
*
* @param useSpeaker 是否开启扬声器
*
* @return 开启扬声器是否成功
*
* @discussion 切换网络通话类型将丢失该设置
*/
- (BOOL)setSpeaker:(BOOL)useSpeaker;
@end
- 参数说明
参数 | 类型 | 说明 |
---|---|---|
useSpeaker | BOOL | 是否开启扬声器 |
- 示例
//开启扬声器
[[NIMAVChatSDK sharedSDK].netCallManager setSpeaker:YES];
设置距离传感器类型
- API介绍
设置距离传感器类型
- API原型
@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];
本篇文档内容是否对您有帮助?
有帮助
我要吐槽
此文档对你是否有帮助
×
有帮助
我要吐槽
×