Esempio n. 1
0
 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);
         }
     }
 }
Esempio n. 2
0
        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);
                }

            }

        }
Esempio n. 3
0
 /// <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);
 }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        /// <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));
        }
Esempio n. 6
0
        /// <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));
        }
Esempio n. 7
0
        /// <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
        }
Esempio n. 8
0
        /// <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);
        }
Esempio n. 10
0
        /// <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));
        }
Esempio n. 11
0
        /// <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);
 }