/// <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); }
/// <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); }
/// <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)); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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()); }
/// <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); } }
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); }
public static void StopDownloadMedia(NIMIMMessage msg) { var msgJson = msg.Serialize(); NosNativeMethods.nim_nos_stop_download_media(msgJson); }
/// <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); }
/// <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)); }
void OnQueryLogByMsgIdCompleted(ResponseCode code, string msdId, NIMIMMessage msg) { ShowOperationResult(new { Code = code, Result = msg }); }