internal static extern void nim_msglog_query_msg_async([MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(NimUtility.Utf8StringMarshaler))] string account_id, NIMSessionType to_type, int limit_count, long last_time, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(NimUtility.Utf8StringMarshaler))] string json_extension, QueryMessageLogDelegate cb, IntPtr user_data);
internal static extern void nim_msglog_delete_by_session_type_async(bool delete_sessions, NIMSessionType to_type, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(NimUtility.Utf8StringMarshaler))] string json_extension, OperateMsglogByObjectIdDelegate cb, IntPtr user_data);
internal static extern void nim_msglog_delete_async([MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(NimUtility.Utf8StringMarshaler))] string account_id, NIMSessionType to_type, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(NimUtility.Utf8StringMarshaler))] string msg_id, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(NimUtility.Utf8StringMarshaler))] string json_extension, OperateMsglogByLogIdDelegate cb, IntPtr user_data);
/// <summary> /// 设置会话项扩展数据(扩展数据只保存在本地) /// </summary> /// <param name="to_type"></param> /// <param name="id"></param> /// <param name="data"></param> /// <param name="cb"></param> public static void SetSessionExtendData(NIMSessionType to_type, string id, string data, SessionChangeHandler cb) { var ptr = DelegateConverter.ConvertToIntPtr(cb); SessionNativeMethods.nim_session_set_extend_data(to_type, id, data, null, SessionChangeCb, ptr); }
internal static extern void nim_msglog_query_msg_online_async([MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(NimUtility.Utf8StringMarshaler))] string id, NIMSessionType to_type, int limit_count, long from_time, long end_time, long end_msg_id, bool reverse, bool need_save_to_local, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(NimUtility.Utf8StringMarshaler))] string json_extension, QueryMessageLogDelegate cb, IntPtr user_data);
/// <summary> /// 删除指定一条消息 /// </summary> /// <param name="sid"></param> /// <param name="sType"></param> /// <param name="msgId"></param> /// <param name="action"></param> public static void DeleteSpecifiedMsglog(string sid, NIMSessionType sType, string msgId, OperateSingleLogResultDelegate action) { var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(action); MsglogNativeMethods.nim_msglog_delete_async(sid, sType, msgId, null, OperateMsglogByLogIdCompleted, ptr); }
/// <summary> /// 设置会话项是否置顶(置顶属性只保存在本地) /// </summary> /// <param name="to_type"></param> /// <param name="id"></param> /// <param name="top"></param> /// <param name="cb"></param> public static void PinSessionOnTop(NIMSessionType to_type, string id, bool top, SessionChangeHandler cb) { var ptr = DelegateConverter.ConvertToIntPtr(cb); SessionNativeMethods.nim_session_set_top(to_type, id, top, null, SessionChangeCb, ptr); }
/// <summary> /// 删除指定会话类型的所有消息 /// </summary> /// <param name="sType">会话类型</param> /// <param name="deleteSessions">是否删除指定会话类型的所有会话列表项</param> /// <param name="action"></param> public static void DeleteMsglogsBySessionType(NIMSessionType sType, bool deleteSessions, OperateMsglogResultDelegate action) { var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(action); MsglogNativeMethods.nim_msglog_delete_by_session_type_async(deleteSessions, sType, null, OperateMsglogByObjIdCompleted, ptr); }
/// <summary> /// 批量删除指定对话的消息。删除成功后,将相应会话项的最后一条消息的状态kNIMSessionMsgStatus设置为已删除状态 /// </summary> /// <param name="id">会话id,对方的account id或者群组tid</param> /// <param name="sType">会话类型</param> /// <param name="action"></param> public static void BatchDeleteMeglog(string id, NIMSessionType sType, OperateMsglogResultDelegate action) { var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(action); MsglogNativeMethods.nim_msglog_batch_status_delete_async(id, sType, null, OnOperateMsglogByObjIdCompleted, ptr); }
private static void OnOperateMsglogByObjIdCompleted(int resCode, string uid, NIMSessionType type, string jsonExtension, IntPtr userData) { NimUtility.DelegateConverter.InvokeOnce <OperateMsglogResultDelegate>(userData, (ResponseCode)resCode, uid, type); }
/// <summary> /// 批量设置未读状态为已读消息状态 /// </summary> /// <param name="id"></param> /// <param name="sType"></param> /// <param name="action"></param> public static void MarkMessagesStatusRead(string id, NIMSessionType sType, OperateMsglogResultDelegate action) { var ptr = DelegateConverter.ConvertToIntPtr(action); MsglogNativeMethods.nim_msglog_batch_status_read_async(id, sType, null, OperateMsglogByObjIdCompleted, ptr); }
/// <summary> /// 查询本地消息(按时间逆序起查,逆序排列) /// </summary> /// <param name="accountId">会话id,对方的account id或者群组tid</param> /// <param name="sType">会话类型</param> /// <param name="limit">一次查询数量,建议20</param> /// <param name="msgAnchorTimetag">上次查询最后一条消息的时间戳(按时间逆序起查,即最小的时间戳)</param> /// <param name="action"></param> public static void QueryMsglogLocally(string accountId, NIMSessionType sType, int limit, long msgAnchorTimetag, QueryMsglogResultDelegate action) { var ptr = DelegateConverter.ConvertToIntPtr(action); MsglogNativeMethods.nim_msglog_query_msg_async(accountId, sType, limit, msgAnchorTimetag, null, QueryLogCompleted, ptr); }