コード例 #1
0
        /// <summary>
        /// 获取群消息未读成员列表
        /// </summary>
        /// <param name="tid"></param>
        /// <param name="msg"></param>
        /// <param name="cb"></param>
        public static void QueryMsgUnreadList(string tid, NIMIMMessage msg, TeamChangedNotificationDelegate cb)
        {
            var ptr     = NimUtility.DelegateConverter.ConvertToIntPtr(cb);
            var msgJson = msg.Serialize();

            TeamNativeMethods.nim_team_msg_query_unread_list(tid, msgJson, null, _teamChangedCallback, ptr);
        }
コード例 #2
0
        /// <summary>
        ///     往本地消息历史数据库里写入一条消息(如果已存在这条消息,则更新。通常是APP的本地自定义消息,并不会发给服务器)
        /// </summary>
        /// <param name="uid">会话id,对方的account id或者群组tid</param>
        /// <param name="need_update_session">是否更新会话列表(一般最新一条消息会有更新的需求)</param>
        /// <param name="msg">消息体</param>
        /// <param name="action">操作结果的回调函数</param>
        public static void WriteMsglog(string uid, bool need_update_session, NIMIMMessage msg, OperateSingleLogResultDelegate action)
        {
            var ptr          = DelegateConverter.ConvertToIntPtr(action);
            var msgJsonValue = msg.Serialize();

            MsglogNativeMethods.nim_msglog_insert_msglog_async(uid, msgJsonValue, need_update_session, null, OperateMsglogByLogIdCompleted, ptr);
        }
コード例 #3
0
        /// <summary>
        /// 消息是否已经被查看
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="jsonExtension"></param>
        /// <returns></returns>
        public static bool IsMessageBeReaded(NIMIMMessage msg, string jsonExtension = null)
        {
            System.Diagnostics.Debug.Assert(msg != null && !string.IsNullOrEmpty(msg.ReceiverID));
            var msgJson = msg.Serialize();

            return(MsglogNativeMethods.nim_msglog_query_be_readed(msgJson, jsonExtension));
        }
コード例 #4
0
ファイル: NIMNosAPI.cs プロジェクト: AndyUI/NIM_PC_SDK-CSharp
        /// <summary>
        /// 获取资源
        /// </summary>
        /// <param name="msg">消息体,NIMVedioMessage NIMAudioMessage NIMFileMessage等带msg_attach属性的有下载信息的消息</param>
        /// <param name="resHandler">下载的结果回调</param>
        /// <param name="prgHandler">下载进度的回调</param>
        public static void DownloadMedia(NIMIMMessage msg, DownloadResultHandler resHandler, ProgressResultHandler prgHandler)
        {
            var ptr1    = NimUtility.DelegateConverter.ConvertToIntPtr(resHandler);
            var ptr2    = NimUtility.DelegateConverter.ConvertToIntPtr(prgHandler);
            var msgJson = msg.Serialize();

            NosNativeMethods.nim_nos_download_media(msgJson, DownloadCb, ptr1, DownloadPrgCb, ptr2);
        }
コード例 #5
0
        /// <summary>
        /// 发送已读回执
        /// </summary>
        public static void SendReceipt(NIMIMMessage msg, MsglogStatusChangedDelegate cb, string jsonExtension = null)
        {
            System.Diagnostics.Debug.Assert(msg != null && !string.IsNullOrEmpty(msg.ReceiverID));
            var msgJson = msg.Serialize();
            var ptr     = NimUtility.DelegateConverter.ConvertToIntPtr(cb);

            MsglogNativeMethods.nim_msglog_send_receipt_async(msgJson, jsonExtension, OnMsglogStatusChanged, ptr);
        }
コード例 #6
0
        /// <summary>
        ///     获取资源
        /// </summary>
        /// <param name="msg">消息体,NIMVideoMessage NIMAudioMessage NIMFileMessage等带msg_attach属性的有下载信息的消息</param>
        /// <param name="resHandler">下载的结果回调</param>
        /// <param name="prgHandler">下载进度的回调</param>
        public static void DownloadMedia(NIMIMMessage msg, DownloadResultHandler resHandler, ProgressResultHandler prgHandler, object userData = null)
        {
            ProgressData data = new ProgressData();

            data.Message  = msg;
            data.UserData = userData;
            ProgressPair pair    = new ProgressPair(data, prgHandler);
            var          ptr1    = DelegateConverter.ConvertToIntPtr(resHandler);
            var          ptr2    = DelegateConverter.ConvertToIntPtr(pair);
            var          msgJson = msg.Serialize();

            NosNativeMethods.nim_nos_download_media(msgJson, DownloadCb, ptr1, DownloadPrgCb, ptr2);
        }
コード例 #7
0
ファイル: MessageList.cs プロジェクト: xuanbg/Utility
        /// <summary>
        /// 将接收到的消息添加到消息列表
        /// </summary>
        /// <param name="msg">云信消息数据</param>
        private void addMessage(NIMIMMessage msg)
        {
            var message = new NimMessage
            {
                id        = msg.ClientMsgID,
                msgid     = msg.ServerMsgId,
                from      = msg.SenderID,
                to        = msg.ReceiverID,
                type      = msg.MessageType.GetHashCode(),
                body      = NimUtil.getMsg(msg),
                direction = msg.SenderID == targetId ? 1 : 0,
                timetag   = msg.TimeStamp / 1000
            };

            messages.Add(message);
        }
コード例 #8
0
        /// <summary>
        /// 获取资源(扩展)
        /// </summary>
        /// <param name="msg">包含附件的消息体</param>
        ///<param name="param">下载扩展信息</param>
        /// <param name="resCb"></param>
        /// <param name="resData"></param>
        /// <param name="prgCb"></param>
        /// <param name="prgData"></param>
        /// <param name="speedCb"></param>
        /// <param name="speedData"></param>
        /// <param name="infoCb"></param>
        /// <param name="infoData"></param>
        public static void DownloadMediaEx(NIMIMMessage msg,
                                           HttpExtendedParameters param,
                                           DownloadCb resCb, IntPtr resData,
                                           DownloadPrgCb prgCb, IntPtr prgData,
                                           DownloadSpeedCb speedCb, IntPtr speedData,
                                           DownloadInfoCb infoCb, IntPtr infoData)
        {
            var msgJson = msg.Serialize();
            CallbackDataPair resPair   = new CallbackDataPair(resCb, resData);
            CallbackDataPair prgPair   = new CallbackDataPair(prgCb, prgData);
            CallbackDataPair speedPair = new CallbackDataPair(speedCb, speedData);
            CallbackDataPair infoPair  = new CallbackDataPair(infoCb, infoData);

            NosNativeMethods.nim_nos_download_media_ex(msgJson,
                                                       param == null ? null : param.Serialize(),
                                                       DownloadResultCallbackEx, resPair.ToIntPtr(),
                                                       DownloadPrgCallbackEx, prgPair.ToIntPtr(),
                                                       DownloadSpeedCallbackEx, speedPair.ToIntPtr(),
                                                       DownloadInfoCallbackEx, infoPair.ToIntPtr());
        }
コード例 #9
0
        /// <summary>
        /// 读取消息内容
        /// </summary>
        /// <param name="message">消息</param>
        /// <returns>消息内容</returns>
        public static object getMsg(NIMIMMessage message)
        {
            var str = message.Serialize();

            switch (message.MessageType)
            {
            case NIMMessageType.kNIMMessageTypeText:
            case NIMMessageType.kNIMMessageTypeTips:
                return(Util.deserialize <TextMessage>(str));

            case NIMMessageType.kNIMMessageTypeImage:
            case NIMMessageType.kNIMMessageTypeFile:
            case NIMMessageType.kNIMMessageTypeAudio:
            case NIMMessageType.kNIMMessageTypeCustom:
                return(Util.deserialize <FileMessage>(str));

            default:
                return(null);
            }
        }
コード例 #10
0
        void DisplayReceivedMessage(NIMIMMessage msg)
        {
            var    sid     = msg.SenderID;
            var    msgType = msg.MessageType;
            Action action  = () =>
            {
                ListViewItem item = new ListViewItem(sid);
                if (msgType != NIMMessageType.kNIMMessageTypeText)
                {
                    item.SubItems.Add(msgType.ToString());
                }
                else
                {
                    var m = msg as NIM.NIMTextMessage;
                    item.SubItems.Add(m.TextContent);
                }
                item.Tag = msg;
                chatListView.Items.Add(item);
            };

            _actionWrapper.InvokeAction(action);
        }
コード例 #11
0
        public static void StopDownloadMedia(NIMIMMessage msg)
        {
            var msgJson = msg.Serialize();

            NosNativeMethods.nim_nos_stop_download_media(msgJson);
        }
コード例 #12
0
        /// <summary>
        /// 只往本地消息历史数据库里写入一条消息(如果已存在这条消息,则更新。通常是APP的本地自定义消息,并不会发给服务器)
        /// </summary>
        /// <param name="uid"></param>
        /// <param name="sType"></param>
        /// <param name="msgId"></param>
        /// <param name="msg"></param>
        /// <param name="action"></param>
        public static void WriteMsglog(string uid, Session.NIMSessionType sType, string msgId, NIMIMMessage msg, OperateSingleLogResultDelegate action)
        {
            var ptr          = NimUtility.DelegateConverter.ConvertToIntPtr(action);
            var msgJsonValue = msg.Serialize();

            MsglogNativeMethods.nim_msglog_write_db_only_async(uid, sType, msgId, msgJsonValue, null, OperateMsglogByLogIdCompleted, ptr);
        }
コード例 #13
0
        /// <summary>
        /// 查询收到的消息是否已经发送过已读回执
        /// </summary>
        /// <param name="msg">消息</param>
        /// <param name="jsonExt">json扩展参数(备用,目前不需要)</param>
        /// <returns></returns>
        public static bool IsMsgReceiptSended(NIMIMMessage msg, string jsonExt = null)
        {
            var msgJson = msg.Serialize();

            return(MsglogNativeMethods.nim_msglog_query_receipt_sent(msgJson, jsonExt));
        }
コード例 #14
0
 void OnQueryLogByMsgIdCompleted(ResponseCode code, string msdId, NIMIMMessage msg)
 {
     ShowOperationResult(new { Code = code, Result = msg });
 }