/// <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="toType">会话类型</param> /// <param name="id">对方的account id或者群组tid</param> /// <param name="handler">最近会话列表项变更的回调</param> public static void SetUnreadCountZero(Session.NIMSessionType toType, string id, SessionChangeHandler handler) { var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(handler); SessionNativeMethods.nim_session_set_unread_count_zero_async((int)toType, id, "", SessionChangeCb, ptr); }
/// <summary> /// 删除最近联系人 /// </summary> /// <param name="toType">会话类型</param> /// <param name="id">对方的account id或者群组tid</param> /// <param name="handler">最近会话列表项变更的回调</param> public static void DeleteRecentSession(Session.NIMSessionType toType, string id, SessionChangeHandler handler) { var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(handler); SessionNativeMethods.nim_session_delete_recent_session_async((int)toType, id, "", SessionChangeCb, ptr); }
/// <summary> /// 查询本地消息(按时间逆序起查,逆序排列) /// </summary> /// <param name="accountId">会话id,对方的account id或者群组tid</param> /// <param name="sType">会话类型</param> /// <param name="limit">一次查询数量,建议20</param> /// <param name="lastTimetag">上次查询最后一条消息的时间戳(按时间逆序起查,即最小的时间戳)</param> /// <param name="action"></param> public static void QueryMsglogLocally(string accountId, Session.NIMSessionType sType, int limit, long lastTimetag, QueryMsglogResultDelegate action) { var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(action); MsglogNativeMethods.nim_msglog_query_msg_async(accountId, sType, limit, lastTimetag, null, QueryLogCompleted, ptr); }
/// <summary> /// 由其他消息生成转发消息 /// </summary> /// <param name="srcMsg">原始消息</param> /// <param name="msgSetting">新的消息属性</param> /// <param name="msgId">新的客户端消息id</param> /// <param name="sessionId">转发目标</param> /// <param name="sessionType">转发目标会话类型</param> /// <param name="timetag">消息时间</param> /// <returns></returns> public static NIMIMMessage CreateRetweetMessage(NIMIMMessage srcMsg, NIMMessageSetting msgSetting, string msgId, string sessionId, Session.NIMSessionType sessionType, long timetag) { string srcMsgJson = srcMsg.Serialize(); string settingJson = string.Empty; if (msgSetting != null) { settingJson = msgSetting.Serialize(); } var newMsgPtr = TalkNativeMethods.nim_talk_create_retweet_msg(srcMsgJson, msgId, sessionType, sessionId, settingJson, timetag); if (newMsgPtr != IntPtr.Zero) { NimUtility.Utf8StringMarshaler marshaler = new NimUtility.Utf8StringMarshaler(); var newMsg = marshaler.MarshalNativeToManaged(newMsgPtr); var newMsgJson = newMsg.ToString(); var dstMsg = MessageFactory.CreateMessage(newMsgJson); GlobalAPI.FreeStringBuffer(newMsgPtr); return(dstMsg); } return(null); }