通话过程控制
本章节介绍音频通话过程中网易云信提供的各种控制功能。包括点对点通话的控制、多人会议的控制和通用控制。 点对点通话的控制包括发送通话控制信息、设置静音等 多人会议的控制包括改变自己在会议中的角色(互动者/观众) 通用控制包括是否接收某用户的音频等
点对点通话的控制
发送通话控制信息
API介绍
音频通话控制,点对点通话有效,异步回调onSessionControlResHandler 见NIMVChatDef.cs
API原型
public static bool ChatControl(long channel_id, NIMVChatControlType type);
File:NIMVChatAPI.cs
参数说明
|参数|类型|说明| |channel_id|long|音频通话通道id| |type|NIMVChatControlType|音视频通话控制类型,视频相关控制暂不支持 |
/** @enum NIMVChatControlType 音视频通话控制类型 */
enum NIMVChatControlType
{
kNIMTagControlOpenAudio = 1, /**< 打开音频 */
kNIMTagControlCloseAudio = 2, /**< 关闭音频 */
kNIMTagControlOpenVideo = 3, /**< 打开视频 */
kNIMTagControlCloseVideo = 4, /**< 关闭视频 */
kNIMTagControlAudioToVideo = 5, /**< 请求从音频切换到视频 */
kNIMTagControlAgreeAudioToVideo = 6, /**< 同意从音频切换到视频 */
kNIMTagControlRejectAudioToVideo = 7, /**< 拒绝从音频切换到视频 */
kNIMTagControlVideoToAudio = 8, /**< 从视频切换到音频 */
kNIMTagControlBusyLine = 9, /**< 占线 */
kNIMTagControlCamaraNotAvailable = 10, /**< 告诉对方自己的摄像头不可用 */
kNIMTagControlEnterBackground = 11, /**< 告诉对方自已处于后台 */
kNIMTagControlReceiveStartNotifyFeedback = 12, /**< 告诉发送方自己已经收到请求了(用于通知发送方开始播放提示音) */
};
示例
//发占线通知
VChatAPI.ChatControl(channel_id, NIMVChatControlType.kNIMTagControlBusyLine);
收到通话控制信息回调
API介绍
收到对方发过来的通话控制信息,在SetSessionStatusCb接口设置的对象委托方法中返回,参数为onSessionControlNotify
API原型
public delegate void onSessionControlNotifyHandler(long channel_id,string uid, int type);
File:NIMVChatDef.cs
参数说明
参数 | 类型 | 说明 |
---|---|---|
channel_id | long | 频道id |
uid | string | 发起者账号 |
type | int | 控制类型 |
示例
NIMVChatSessionStatus vchat_session_;
/// 控制操作通知
vchat_session_.onSessionControlNotify = OnSessionControlNotifyCallback;
public void OnSessionControlNotifyCallback(long channel_id, string uid, int type)
{
}
VChatAPI.SetSessionStatusCb(vchat_session_);
设置静音
API介绍
设置音频静音
API原型
public static void SetAudioMute(bool muted);
File:NIMVChatAPI.cs
参数说明
|参数|类型|说明| |muted|bool|true 静音,false 不静音|
示例
void TestSetAudioMute(bool mute)
{
VChatAPI.SetAudioMute(audio_mute);
}
获取音频静音状态
API介绍
获取音频静音状态
API原型
public static bool GetAudioMuteEnabled()
File:NIMVChatAPI.cs
示例
void test_mute_enabled()
{
bool audio_mute = VChatAPI.GetAudioMuteEnabled();
}
多人通话的控制
改变自己在会议中的角色
API介绍
设置观众模式(多人模式下),全局有效(重新发起时也生效),观众模式能减少运行开销
API原型
public static void SetViewerMode(bool viewer);
File:NIMVChatAPI.cs
参数说明
|参数|类型|说明| |viewer|bool|viewer 是否观众模式.true为是。
示例
void DemoNIMVchatSetViewerMode(bool viewer)
{
VChatAPI.SetViewerMode(viewer);
}
获取当前是否是观众模式
API介绍
获取当前是否是观众模式
API原型
public static bool GetViewerMode();
File:NIMVChatAPI.cs
示例
void TestViewerEnabled()
{
Boolean ret = VChatAPI.GetViewerMode();
}
通用控制
指定某用户设置是否对其静音,是否接收视频数据
API介绍
API原型
public static void SetMemberInBlackList(string uid, bool add, bool audio, string json_extension, NIMVChatOptHandler cb);
File:NIMVChatAPI.cs
参数说明
|参数|类型|说明| |uid|string|成员account| |add|bool|true表示添加到黑名单,false表示从黑名单移除| |audio|bool|true表示音频黑名单,false表示视频黑名单,视频黑名单暂时无效| |json_extension|string|无效扩展字段| |cb|NIMVChatOptHandler| cb 结果回调见NIMVChatDef.cs,返回的json_extension无效|
示例
public void OnSetMemberInBlackListCallback(bool ret, int code, string json_extension)
{
}
void DemoTestNimVchatSetMemberInBlacklist(string uid,bool add,bool audio)
{
VChatAPI.SetMemberInBlackList(uid, add, audio, "", OnSetMemberInBlackListCallback);
}