private static void OnSessionInviteNotify(long channel_id, string uid, int mode, long time, string custom_info) { if (GetInstance().channel_id != 0 && channel_id != GetInstance().channel_id) { NIM.NIMVChatInfo info = new NIM.NIMVChatInfo(); NIM.VChatAPI.CalleeAck(channel_id, false, info); } else { VideoChatForm vform = VideoChatForm.GetInstance(); RtsForm rtsForm = RtsForm.GetInstance(); VideoChatInfo vchat_info = vform.VchatInfo; //当前不存在rts会话和音视频会话,才能开启新的会话 if (rtsForm.RtsState == RtsFormState.kRtsInit && vchat_info.state == VChatState.kVChatUnknow) { vchat_info.channel_id = channel_id; vchat_info.uid = uid; vchat_info.state = VChatState.kVChatNotify; vchat_info.chat_mode = (NIMVideoChatMode)mode; vform.VchatInfo = vchat_info; Action a = () => { vform.Show(); }; _ownerMainForm.BeginInvoke(a); } else { NIM.NIMVChatInfo info = new NIM.NIMVChatInfo(); NIM.VChatAPI.CalleeAck(channel_id, false, info); } } }
private static void OnSessionInviteNotify(long channel_id, string uid, int mode, long time,string custom_info) { if (GetInstance().channel_id != 0 && channel_id != GetInstance().channel_id) { NIM.NIMVChatInfo info = new NIM.NIMVChatInfo(); NIM.VChatAPI.CalleeAck(channel_id, false, info); } else { MainForm.VideoChatForm vform = MainForm.VideoChatForm.GetInstance(); MainForm.VideoChatInfo vchat_info = vform.VchatInfo; if (vchat_info.state == MainForm.VChatState.kVChatUnknow) { vchat_info.channel_id = channel_id; vchat_info.uid = uid; vchat_info.state = MainForm.VChatState.kVChatNotify; vform.VchatInfo = vchat_info; Action a = () => { vform.Show(); }; _ownerFriendsListForm.BeginInvoke(a); } else { NIM.NIMVChatInfo info = new NIM.NIMVChatInfo(); NIM.VChatAPI.CalleeAck(channel_id, false, info); } } }
/// <summary> /// 对方邀请处理结果 /// </summary> /// <param name="channel_id"></param> /// <param name="isAccept">是否接听</param> public static void AudioResult(long channel_id, bool isAccept) { if (!isAccept) { _currentChannelId = 0; //重置 } NIM.NIMVChatInfo info = new NIM.NIMVChatInfo(); NIM.VChatAPI.CalleeAck(channel_id, isAccept, info); }
/// <summary> /// 音视频通话重新连接,用于底层链接在上层认为异常时尝试重连 /// </summary> /// <param name="json_extension">可扩展添加kNIMVChatSessionId,用于指定对应的通话</param> /// <param name="cb">操作结果的回调函数,当通话通话不存在或通话</param> public static void NIMVChatRelogin(string sessionid, NIMVChatOptHandler cb) { NIMVChatInfo vchatinfo = new NIMVChatInfo(); vchatinfo.SessionId = sessionid; string json_extension = vchatinfo.Serialize(); var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb); VChatNativeMethods.nim_vchat_relogin(json_extension, VChatNormalOptCb, ptr); }
/// <summary> /// 启动点对点通话 /// </summary> /// <param name="mode">启动音视频通话类型</param> /// <param name="apns_text">自定义推送字段,填空用默认推送</param> /// <param name="info">json扩展封装类,见NIMVChatInfo</param> /// <param name="customInfo">自定义信息</param> /// <returns> bool true 调用成功,false 调用失败可能有正在进行的通话</returns> public static bool Start(NIMVideoChatMode mode, string apns_text, NIMVChatInfo info, string customInfo = null) { if (info == null) { info = new NIMVChatInfo(); } string json_extension = info.Serialize(); return(VChatNativeMethods.nim_vchat_start(mode, apns_text, customInfo, json_extension, IntPtr.Zero)); }
/// <summary> /// 回应音视频通话邀请 /// </summary> /// <param name="channel_id">音视频通话通道id</param> /// <param name="accept">true 接受,false 拒绝</param> /// <param name="info">json扩展封装类,见NIMVChatInfo</param> /// <returns>bool true 调用成功,false 调用失败(可能channel_id无匹配,如要接起另一路通话前先结束当前通话)</returns> public static bool CalleeAck(long channel_id, bool accept, NIMVChatInfo info) { if (info == null) { info = new NIMVChatInfo(); } string json_extension = info.Serialize(); //string debug_info = string.Format("callee ack.cid:{0},accept:{1},info:{2}", channel_id, accept, json_extension); //System.Diagnostics.Debug.WriteLine(debug_info); return(VChatNativeMethods.nim_vchat_callee_ack(channel_id, accept, json_extension, IntPtr.Zero)); }
/// <summary> /// 回应音视频通话邀请 /// </summary> /// <param name="channel_id">音视频通话通道id</param> /// <param name="accept">true 接受,false 拒绝</param> /// <param name="info">json扩展封装类,见NIMVChatInfo</param> /// <returns>bool true 调用成功,false 调用失败(可能channel_id无匹配,如要接起另一路通话前先结束当前通话)</returns> public static bool CalleeAck(long channel_id, bool accept, NIMVChatInfo info) { #if NIMAPI_UNDER_WIN_DESKTOP_ONLY || UNITY_STANDALONE_WIN if (info == null) { info = new NIMVChatInfo(); } string json_extension = info.Serialize(); return(VChatNativeMethods.nim_vchat_callee_ack(channel_id, accept, json_extension, IntPtr.Zero)); #else return(false); #endif }
/// <summary> /// 启动点对点通话 /// </summary> /// <param name="mode">启动音视频通话类型</param> /// <param name="apns_text">自定义推送字段,填空用默认推送</param> /// <param name="info">json扩展封装类,见NIMVChatInfo</param> /// <param name="customInfo">自定义信息</param> /// <returns> bool true 调用成功,false 调用失败可能有正在进行的通话</returns> public static bool Start(NIMVideoChatMode mode, string apns_text, NIMVChatInfo info, string customInfo = null) { #if NIMAPI_UNDER_WIN_DESKTOP_ONLY || UNITY_STANDALONE_WIN if (info == null) { info = new NIMVChatInfo(); } string json_extension = info.Serialize(); return(VChatNativeMethods.nim_vchat_start(mode, apns_text, customInfo, json_extension, IntPtr.Zero)); #else return(false); #endif }
private static void OnSessionInviteNotify(long channel_id, string uid, int mode, long time, string custom_info) { Action a = () => { string test = uid.ToString(); if (mode == (int)NIM.NIMVideoChatMode.kNIMVideoChatModeAudio) { test += "向你发起实时语音"; } else { test += "向你发起视频聊天"; } DialogResult ret = MessageBox.Show(test, "音视频邀请", MessageBoxButtons.YesNo); NIM.NIMVChatInfo info = new NIM.NIMVChatInfo(); NIM.VChatAPI.CalleeAck(channel_id, ret == DialogResult.Yes, info); }; _ownerFriendsListForm.BeginInvoke(a); }
/// <summary> /// 回应音视频通话邀请 /// </summary> /// <param name="channel_id">音视频通话通道id</param> /// <param name="accept">true 接受,false 拒绝</param> /// <param name="json_extension">接起时有效 参数可选 如{"custom_video":0, "custom_audio":0}</param> /// <returns></returns> public static bool CalleeAck(long channel_id, bool accept, NIMVChatInfo info) { string json_extension = info.Serialize(); return(nim_vchat_callee_ack(channel_id, accept, json_extension, IntPtr.Zero)); }
/// <summary> /// 启动通话 /// </summary> /// <param name="mode">启动音视频通话类型</param> /// <param name="json_extension">扩展,kNIMVChatUids成员id列表(必填),其他可选 如{"uids":["uid_temp"],"custom_video":0, "custom_audio":0}</param> /// <returns></returns> public static bool Start(NIMVideoChatMode mode, NIMVChatInfo info) { string json_extension = info.Serialize(); return(nim_vchat_start(mode, null, null, json_extension, IntPtr.Zero)); }
private void BtnRefuseClick(object sender, EventArgs e) { NIM.NIMVChatInfo info = new NIM.NIMVChatInfo(); NIM.VChatAPI.CalleeAck(vchat_info.channel_id, false, info); Close(); }
private void BtnAcceptClick(object sender, EventArgs e) { NIM.NIMVChatInfo info = new NIM.NIMVChatInfo(); NIM.VChatAPI.CalleeAck(vchat_info.channel_id, true, info); }