Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
        /// <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);
        }