Package io.rong.imlib

## Class RongIMClient

- All Implemented Interfaces:

      public abstract class RongIMClient

  IM 客户端核心类。 所有 IM 相关方法、监听器都由此调用和设置。 只能在主进程调用。

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `public enum` | `RongIMClient.TimestampOrder` |
    `public enum` | `RongIMClient.ConnectionErrorCode` | 建立连接返回的错误码
    `public enum` | `RongIMClient.ErrorCode` | RongIMClient ErrorCode
    `public enum` | `RongIMClient.DatabaseOpenStatus` | 数据库打开枚举
    `public enum` | `RongIMClient.MediaType` | 文件类型枚举。
    `public enum` | `RongIMClient.BlacklistStatus` | 是否在黑名单中状态。
    `public enum` | `RongIMClient.SearchType` | 搜索类型枚举。
    `public enum` | `RongIMClient.PushLanguage` | 远程推送语言类型
    `public enum` | `RongIMClient.DiscussionInviteStatus` | 讨论组邀请状态。
    `public interface` | `RongIMClient.EncryptedSessionConnectionListener` | 加密会话信令建立状态监听。 发起 : onEncryptedSessionRequest 响应 : onEncryptedSessionResponse 建立成功 : onEncryptedSessionEstablished 取消加密会话 : onEncryptedSessionCanceled 结束加密会话 : onEncryptedSessionTerminated
    `public interface` | `RongIMClient.ConnectionStatusListener` | 连接状态监听器，获取连接相关状态。
    `public interface` | `RongIMClient.OnReceiveMessageListener` | 接收消息的监听器。 注意:请切换线程，处理耗时操作。
    `public interface` | `RongIMClient.TypingStatusListener` | 输入状态监听器，当输入状态发生变化时，会回调onTypingStatusChanged
    `public interface` | `RongIMClient.RCLogInfoListener` | Log 输出监听
    `public interface` | `RongIMClient.ReadReceiptListener` | 消息回执监听器。 收到消息回执时会回调 onReadReceiptReceived 。
    `public interface` | `RongIMClient.OnReceiveDestructionMessageListener` | 阅后即焚消息接收监听器
    `public interface` | `RongIMClient.OnRecallMessageListener` | 撤回消息监听器
    `public interface` | `RongIMClient.SyncConversationReadStatusListener` | 同步消息未读状态监听接口。 多端登录，收到其它端清除某一会话未读数通知的时候，回调 `onSyncConversationReadStatus`。
    `public interface` | `RongIMClient.DestructCountDownTimerListener` | 焚烧倒计时回调接口。
    `public interface` | `RongIMClient.ConversationStatusListener` | 会话状态（置顶和免打扰）多端同步监听
    `public interface` | `RongIMClient.MessageExpansionListener` |
    `public interface` | `RongIMClient.ChatRoomActionListener` | 聊天室操作监听器
    `public interface` | `RongIMClient.KVStatusListener` | 聊天室 KV 状态变化的监听
    `public interface` | `RongIMClient.RealTimeLocationListener` | 实时位置共享监听。
    `public class` | `RongIMClient.DefaultOperationCallback` |
    `public abstract class` | `RongIMClient.Callback` |
    `public abstract class` | `RongIMClient.ResultCallback` | 泛型类，用于 API 中功能的回调处理。
    `public abstract class` | `RongIMClient.ConnectCallback` | 连接服务器回调类。
    `public abstract class` | `RongIMClient.SyncCallback` |
    `public abstract class` | `RongIMClient.OperationCallback` | 执行操作回调。
    `public abstract class` | `RongIMClient.OnReceiveMessageWrapperListener` | 接收消息的监听器。 注意:请切换线程，处理耗时操作。 此接口可以替换 OnReceiveMessageListener 用于解决接收大量消息时，界面频繁刷新问题。 该接口会返回 left 和 hasPackage 参数，两者可以配合使用判断何时拉取完离线消息。
    `public abstract class` | `RongIMClient.SendMessageCallback` | 发送消息的回调。
    `public abstract class` | `RongIMClient.SendImageMessageWithUploadListenerCallback` | 发送图片消息回调。 如果需要将图片上传到自己服务器，请使用这个回调。
    `public abstract class` | `RongIMClient.SendImageMessageCallback` | 发送图片消息的回调。
    `public abstract class` | `RongIMClient.SendMediaMessageCallback` | 发送多媒体类消息的回调。
    `public abstract class` | `RongIMClient.UploadMediaCallback` | 上传媒体文件的回调。
    `public abstract class` | `RongIMClient.DownloadMediaCallback` | 下载文件的回调。
    `public abstract class` | `RongIMClient.GetNotificationQuietHoursCallback` | 获取消息通知免打扰时间的回调。
    `public abstract class` | `RongIMClient.GetBlacklistCallback` | 获取黑名单回调。
    `public abstract class` | `RongIMClient.CreateDiscussionCallback` | 创建讨论组的回调。
    `public class` | `RongIMClient.UploadImageStatusListener` | 图片上传状态监听。 如果使用者自己上传图片，那么需要通过调用 UploadImageStatusListener 中的方法将上传进度更新在 UI 上显示。 该 listener 通过 SendImageMessageWithUploadListenerCallback 返回实例供使用者使用。

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `RongIMClient()` |

  - ### Enum Constant Summary

    Enum Constants
    Enum Constant | Description
    --- | ---

  - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `static RongIMClient` | `getInstance()` | 获取 IMLib 接口类实例，需在执行 init 方法初始化 SDK 后获取, 否则返回值为 NULL。
    `static void` | `init(Application application, String appKey)` | 初始化融云 SDK，在整个应用程序全局只需要调用一次。 只能在主进程调用，建议在 Application 继承类中调用。
    `static void` | `init(Context context)` | 初始化 SDK，在整个应用程序全局只需要调用一次, 建议在 Application 继承类中调用。
    `static void` | `init(Context context, String appKey)` | 初始化 SDK，在整个应用程序全局只需要调用一次, 建议在 Application 继承类中调用。
    `static void` | `init(Context context, String appKey, boolean enablePush)` | 初始化 SDK，在整个应用程序全局只需要调用一次, 建议在 Application 继承类中调用。
    `static void` | `init(Context context, String appKey, boolean enablePush, Boolean isMainProcess)` | 初始化 SDK，在整个应用程序全局只需要调用一次, 建议在 Application 继承类中调用。
    `static RongIMClient` | `connect(String token, RongIMClient.ConnectCallback connectCallback)` | 连接融云服务器，在整个应用程序全局，只需要调用一次，需在 init 之后调用。 调用此接口返回非业务错误码时，SDK 会启动重连机制进行重连；如果仍没有连接成功，会在设备网络状态变化时再次进行重连。如果您使用 IMKit，请使用 RongIM 中的同名方法建立与融云服务器的连接，而不要使用此方法。调用该接口，SDK 会在连接失败之后尝试重连，将出现以下两种情况： 第一、连接成功，回调 onSuccess(userId)。 第二、出现 SDK 无法处理的错误，回调 onError(errorCode)（如 token 非法），并不再重连。 如果您不想一直进行重连，可以使用 connect(String,int,ConnectCallback) 接口并设置连接超时时间 timeLimit
    `static RongIMClient` | `connect(String token, int timeLimit, RongIMClient.ConnectCallback connectCallback)` | 连接融云服务器，在整个应用程序全局，只需要调用一次，需在 init 之后调用。 调用此接口返回非业务错误码时，SDK 会启动重连机制进行重连；如果仍没有连接成功，会在设备网络状态变化时再次进行重连。如果您使用 IMKit，请使用 RongIM 中的同名方法建立与融云服务器的连接，而不要使用此方法。
    `static String` | `getVersion()` |
    `static void` | `setConnectionStatusListener(RongIMClient.ConnectionStatusListener listener)` | 设置连接状态变化的监听器。 当回调的状态为 TOKEN_INCORRECT, 需要获取正确的token, 并主动调用connect。 如果使用 IMKit，使用 RongIM 中同名方法 `setConnectionStatusListener` 。 removeNotificationQuietHours
    `static void` | `setOnReceiveMessageListener(OnReceiveMessageListener listener)` | 设置接收消息事件的监听器。 注意:建议设置应用生命周期的全局监听器。
    `static boolean` | `addOnReceiveMessageListener(OnReceiveMessageWrapperListener listener)` | 添加接收消息事件的监听器。 注意:建议设置应用生命周期的全局监听器。
    `static boolean` | `removeOnReceiveMessageListener(OnReceiveMessageWrapperListener listener)` | 移除接收消息事件的监听器。
    `static void` | `registerMessageType(Class<out MessageContent> messageContentClass)` | 注册自定义消息类型 请在初始化之后，连接之前调用该方法注册自定义消息。
    `static void` | `registerMessageType(List<Class<out MessageContent>> messageContentClassList)` | 批量注册自定义消息类型 请在初始化之后，连接之前调用该方法注册自定义消息。
    `static void` | `setTypingStatusListener(RongIMClient.TypingStatusListener listener)` | 设置输入状态监听器。 当输入状态发生变化时，回调 onTypingStatusChanged。 对于单聊而言，当对方正在输入时，监听会触发一次；当对方不处于输入状态时，该监听还会触发一次，但回调里输入用户列表为空。
    `static void` | `setRCLogInfoListener(RongIMClient.RCLogInfoListener listener)` | 设置 Log 输出监听。 注意：需要在 connect 之前调用！
    `static void` | `setReadReceiptListener(RongIMClient.ReadReceiptListener listener)` | 设置消息回执监听器。 当收到消息回执时回调 onReadReceiptReceived。
    `static void` | `setServerInfo(String naviServer, String fileServer)` | 设置私有部署的导航服务器和媒体服务器地址。 可以支持设置 http://cn.xxx.com 或 https://cn.xxx.com 或 cn.xxx.com， 如果设置成 cn.xxx.
    `static void` | `setStatisticDomain(String domain)` | 配置数据上传地址 （非必须）。 配置此地址，SDK 会在初始化时把设备相关信息上传到私有云节点。影响到的功能是开发者后台的广播推送功能，如果私有云客户没有配置该地址，那从后台发推送时，客户端是收不到的。普通的 IM 推送不受影响。 设置数据上传服务器地址。 可以支持设置 http://cn.xxx.com 或者 https://cn.xxx.com 或者 cn.xxx.com。 如果设置成 cn.xxx.
    `static void` | `setOnRecallMessageListener(RongIMClient.OnRecallMessageListener listener)` | 设置撤回消息监听器
    `static void` | `setChatRoomActionListener(RongIMClient.ChatRoomActionListener listener)` | 设置聊天室操作监听。 开发者可以通过设置监听，获取加入聊天室的状态回调。
    `abstract RongIMClient.ConnectionStatusListener.ConnectionStatus` | `getCurrentConnectionStatus()` | 获取当前 IM 服务连接状态。
    `abstract Activity` | `getTopForegroundActivity()` | 获取处于前台的最上层 Activity。
    `abstract void` | `logout()` | 断开与融云服务器的连接，并且不再接收远程推送消息。 若想断开连接后仍然接受远程推送消息，可以调用 disconnect
    `abstract void` | `disconnect()` | 断开与融云服务器的连接，但仍然接收远程推送。 若想断开连接后不接受远程推送消息，可以调用logout。注意：因为 SDK 在前后台切换或者网络出现异常都会自动重连，保证连接可靠性。 所以除非您的 App 逻辑需要登出，否则一般不需要调用此方法进行手动断开。
    `abstract void` | `disconnect(boolean isReceivePush)` | 断开与融云服务器的连接，根据参数选择是否继续接收远程推送。
    `abstract void` | `getConversationList(RongIMClient.ResultCallback<List<Conversation>> callback)` | 获取当前用户本地会话列表，该方法返回的是以下类型的会话列表：私聊，群组，讨论组，系统会话。 此方法会从本地数据库中，读取会话列表。返回的会话列表排序规则为:按照时间从前往后排列，如果有置顶的会话，则置顶的会话会排列在前面。 如果您需要获取其它类型的会话列表,可以使用getConversationList 。 需要在连接数据库打开回调 `OnDatabaseOpened` 后调用，ConnectCallback 。
    `abstract void` | `getConversationList(RongIMClient.ResultCallback<List<Conversation>> callback, Array<ConversationType> conversationTypes)` | 根据会话类型，获取当前用户的本地会话列表。
    `abstract void` | `getTopConversationList(RongIMClient.ResultCallback<List<Conversation>> callback, Array<ConversationType> conversationTypes)` | 根据会话类型,获取置顶会话列表
    `abstract void` | `getConversationListByPage(RongIMClient.ResultCallback<List<Conversation>> callback, long timeStamp, int count, Array<ConversationType> conversationTypes)` | 分页获取会话列表。
    `abstract void` | `getBlockedConversationList(RongIMClient.ResultCallback<List<Conversation>> callback, Array<ConversationType> conversationTypes)` | 获取免打扰的会话列表。
    `abstract void` | `getConversation(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Conversation> callback)` | 获取单个会话信息。
    `abstract void` | `updateConversationInfo(ConversationType conversationType, String targetId, String title, String portrait, RongIMClient.ResultCallback callback)` | 更新会话信息。
    `abstract void` | `removeConversation(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Boolean> callback)` | 从会话列表中移除某一会话。 此方法不删除会话内的消息。如果此会话中有新的消息，该会话将重新在会话列表中显示，并显示最近的历史消息。
    `abstract void` | `setConversationToTop(ConversationType conversationType, String id, boolean isTop, RongIMClient.ResultCallback<Boolean> callback)` | 设置会话的置顶状态。 会话置顶：设置此会话在会话列表的第一条（当有多个会话置顶时，按照设置时间排序，先设置的在前）。 例：依次设置 A、B、C 会话置顶，会话排序依次为 A、B、C。 会话不存在时设置置顶，会在会话列表生成会话；设置置顶之后删除会话，置顶设置自动失效。
    `abstract void` | `setConversationToTop(ConversationType conversationType, String id, boolean isTop, boolean needCreate, RongIMClient.ResultCallback<Boolean> callback)` | 设置会话的置顶状态。 若会话不存在，调用此方法 SDK 自动创建会话并置顶。
    `abstract void` | `getTotalUnreadCount(RongIMClient.ResultCallback<Integer> callback)` | 获取所有会话的总未读消息数。 注意：不包含聊天室，聊天室消息不计数。
    `abstract void` | `getTotalUnreadCount(RongIMClient.ResultCallback<Integer> callback, Array<Conversation> conversations)` | 获取所有指定会话的总未读消息数。 注意：不包含聊天室，聊天室消息不计数。
    `abstract void` | `getUnreadCount(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Integer> callback)` | 获取指定会话的未读消息数。 注意：不包含聊天室，聊天室消息不计数。
    `abstract void` | `getUnreadCount(RongIMClient.ResultCallback<Integer> callback, Array<ConversationType> conversationTypes)` | 获取指定会话类型的总未读消息数。 注意：不包含聊天室，聊天室消息不计数。
    `abstract void` | `getUnreadCount(Array<ConversationType> conversationTypes, boolean containBlocked, RongIMClient.ResultCallback<Integer> callback)` | 获取指定会话类型的总未读消息数。 注意：不包含聊天室，聊天室消息不计数。
    `abstract void` | `getUnreadCount(Array<ConversationType> conversationTypes, RongIMClient.ResultCallback<Integer> callback)` | 获取指定会话类型的总未读消息数。 注意：不包含聊天室，聊天室消息不计数。
    `abstract void` | `getMessageCount(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Integer> callback)` | 获取指定会话的消息总数。
    `abstract void` | `getLatestMessages(ConversationType conversationType, String targetId, int count, RongIMClient.ResultCallback<List<Message>> callback)` | 获取指定会话的最新消息。
    `abstract List<Message>` | `getHistoryMessages(ConversationType conversationType, String targetId, int oldestMessageId, int count)` | 获取会话中符合条件的消息列表。
    `abstract List<Message>` | `getHistoryMessages(ConversationType conversationType, String targetId, String objectName, int oldestMessageId, int count)` | 获取会话中符合条件的消息列表。
    `abstract void` | `getHistoryMessages(ConversationType conversationType, String targetId, String objectName, int oldestMessageId, int count, RongIMClient.ResultCallback<List<Message>> callback)` | 获取会话中符合条件的消息列表。 返回的消息中不包含 oldestMessageId 对应那条消息，如果会话中的消息数量小于参数 count 的值，会将该会话中的所有消息返回。 如：oldestMessageId 为 10，count 为 2，会返回 messageId 为 9 和 8 的 Message 对象列表。
    `abstract void` | `getHistoryMessages(ConversationType conversationType, String targetId, String objectName, int baseMessageId, int count, GetMessageDirection direction, RongIMClient.ResultCallback<List<Message>> callback)` | 获取会话中符合条件的消息列表。 如：获取 messageId 为 22 的之前的 10条 图片消息，则相应参数为 getHistoryMessages(conversationType, targetId, "RC:ImgMsg", 22, 10, true, resultCallback)。
    `abstract void` | `getHistoryMessages(ConversationType conversationType, String targetId, List<String> objectNames, long timestamp, int count, GetMessageDirection direction, RongIMClient.ResultCallback<List<Message>> callback)` | 获取会话中符合条件的消息列表。 如： 要获取 messageId 为 22 的之前的 10 条图片消息，和文字消息 objectNames 为字符串 List
        objectNames.add("RC:ImgMsg");
        objectNames.add("RC:TxtMsg");
    则相应参数为 getHistoryMessages(conversationType, targetId, objectNames, 22, 10, true, resultCallback)。
    `abstract void` | `getRemoteHistoryMessages(ConversationType conversationType, String targetId, long dateTime, int count, RongIMClient.ResultCallback<List<Message>> callback)` | 从服务器端获取指定时间之前的历史消息。 区别于 getHistoryMessages，该接口是从融云服务器中拉取。从服务端拉取消息后，客户端会做排重，返回排重后的数据。通常用于更换新设备后，拉取历史消息。 使用的时候，建议优先通过 getHistoryMessages 从本地数据库拉取历史消息， 当本地数据库没有历史消息后，再通过此接口获取服务器历史消息，时间戳传入本地数据库里最早的消息时间戳。注意： 1.
    `abstract void` | `getRemoteHistoryMessages(ConversationType conversationType, String targetId, RemoteHistoryMsgOption remoteHistoryMsgOption, RongIMClient.ResultCallback<List<Message>> callback)` | 获取指定会话远端历史消息。 此功能需要在融云开发者后台开启历史消息云存储功能。注意：不支持聊天室！
    `abstract void` | `cleanRemoteHistoryMessages(ConversationType conversationType, String targetId, long recordTime, RongIMClient.OperationCallback callback)` | 清除服务器上存储的历史消息。 根据会话类型和目标会话 id 清除某一会话指定时间戳之前的服务端历史消息, 清除成功后只能从服务端获取到该时间戳之后的历史消息。注意：必须先开通历史消息云存储功能！
    `abstract void` | `cleanHistoryMessages(ConversationType conversationType, String targetId, long recordTime, boolean cleanRemote, RongIMClient.OperationCallback callback)` | 删除指定时间戳之前的消息，可选择是否同时删除服务器端消息 此方法可从服务器端清除历史消息，但是必须先开通历史消息云存储功能。 根据会话类型和会话 id 清除某一会话指定时间戳之前的本地数据库消息（服务端历史消息）， 清除成功后只能从本地数据库（服务端）获取到该时间戳之后的历史消息。
    `abstract void` | `getHistoryMessages(ConversationType conversationType, String targetId, int oldestMessageId, int count, RongIMClient.ResultCallback<List<Message>> callback)` | 获取会话中，从指定消息之前、指定数量的、指定消息类型的最新消息实体。
    `abstract void` | `deleteMessages(Array<int> messageIds, RongIMClient.ResultCallback<Boolean> callback)` | 删除消息。
    `abstract void` | `deleteMessages(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Boolean> callback)` | 删除某个会话中的所有消息。 此接口删除指定会话中数据库的所有消息，同时会清理数据库空间，减少占用空间。
    `abstract void` | `deleteRemoteMessages(ConversationType conversationType, String targetId, Array<Message> messages, RongIMClient.OperationCallback callback)` | 批量删除某个会话中的指定远端消息（同时删除对应的本地消息）。 一次批量操作仅支持删除属于同一个会话的消息，请确保消息列表中的所有消息来自同一会话，一次最多删除 100 条消息。注意：不支持聊天室！5.6.9版本以下不支持超级群会话类型，从 5.6.
    `abstract void` | `clearMessages(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Boolean> callback)` | 删除某个会话中的所有消息。 注意：不支持聊天室！
    `abstract void` | `clearMessagesUnreadStatus(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Boolean> callback)` | 清除某个会话中的未读消息数。 注意：不支持聊天室！
    `abstract void` | `setMessageExtra(int messageId, String value, RongIMClient.ResultCallback<Boolean> callback)` | 设置本地消息的附加信息。 用于扩展消息的使用场景。设置后可以通过 getHistoryMessages 取出带附加信息的消息。注意：只能用于本地使用，无法同步给远程用户。
    `abstract void` | `setMessageReceivedStatus(int messageId, ReceivedStatus receivedStatus, RongIMClient.ResultCallback<Boolean> callback)` | 设置消息接收状态。
    `abstract void` | `setMessageSentStatus(Message message, RongIMClient.ResultCallback<Boolean> callback)` | 设置消息发送状态。
    `abstract void` | `getTextMessageDraft(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<String> callback)` | 获取会话中的草稿信息。
    `abstract void` | `saveTextMessageDraft(ConversationType conversationType, String targetId, String content, RongIMClient.ResultCallback<Boolean> callback)` | 保存会话草稿信息。
    `abstract void` | `clearTextMessageDraft(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Boolean> callback)` | 删除指定会话中的草稿信息。
    `abstract void` | `getMessage(int messageId, RongIMClient.ResultCallback<Message> callback)` | 根据消息 id 获取消息体（数据库索引唯一值）。
    `abstract void` | `insertOutgoingMessage(ConversationType type, String targetId, SentStatus sentStatus, MessageContent content, RongIMClient.ResultCallback<Message> resultCallback)` | 向本地会话中插入一条消息。 这条消息只是插入本地会话，不会实际发送给服务器和对方。 插入消息需为入库消息，即ISPERSISTED，否者会回调 PARAMETER_ERROR
    `abstract void` | `insertOutgoingMessage(ConversationType type, String targetId, SentStatus sentStatus, MessageContent content, long sentTime, RongIMClient.ResultCallback<Message> resultCallback)` | 向本地会话中插入一条消息，方向为发送。 这条消息只是插入本地会话，不会实际发送给服务器和对方。 插入消息需为入库消息，即 ISPERSISTED，否者会回调 PARAMETER_ERROR
    `abstract void` | `insertIncomingMessage(ConversationType type, String targetId, String senderUserId, ReceivedStatus receivedStatus, MessageContent content, RongIMClient.ResultCallback<Message> resultCallback)` | 向本地会话中插入一条消息，方向为接收。 这条消息只是插入本地会话，不会实际发送给服务器和对方。插入消息需为入库消息，即 ISPERSISTED，否者会回调 PARAMETER_ERROR。
    `abstract void` | `insertIncomingMessage(ConversationType type, String targetId, String senderUserId, ReceivedStatus receivedStatus, MessageContent content, long sentTime, RongIMClient.ResultCallback<Message> resultCallback)` | 向本地会话中插入一条消息，方向为接收。 这条消息只是插入本地会话，不会实际发送给服务器和对方。插入消息需为入库消息，即 ISPERSISTED，否者会回调 PARAMETER_ERROR。
    `abstract void` | `sendLocationMessage(Message message, String pushContent, String pushData, IRongCallback.ISendMessageCallback sendMessageCallback)` | 发送地理位置消息。 发送前构造 Message 消息实体，消息实体中的 content 必须为 LocationMessage, 否则返回失败。 其中的缩略图地址 scheme 只支持 file:// 和 http://。也可不设置缩略图地址，传入 NULL。
    `abstract void` | `sendMessage(ConversationType type, String targetId, MessageContent content, String pushContent, String pushData, IRongCallback.ISendMessageCallback callback)` | 根据会话类型，发送消息。 通过 io.rong.imlib.IRongCallback.
    `abstract void` | `sendMessage(Message message, String pushContent, String pushData, IRongCallback.ISendMessageCallback callback)` | 发送消息。 通过 io.rong.imlib.IRongCallback.
    `abstract void` | `sendMessage(Message message, String pushContent, String pushData, SendMessageOption option, IRongCallback.ISendMessageCallback callback)` | 发送消息。 通过 io.rong.imlib.IRongCallback.
    `abstract void` | `sendDirectionalMessage(ConversationType type, String targetId, MessageContent content, Array<String> userIds, String pushContent, String pushData, IRongCallback.ISendMessageCallback callback)` | 发送定向消息。 此方法用于在群组、超级群中发送消息给其中的部分用户，其它用户不会收到这条消息。 通过 中的方法回调发送的消息状态及消息体。 此方法只能发送非多媒体消息，多媒体消息如ImageMessageFileMessage 或其他继承自 的消息须调用 sendDirectionalMediaMessage 如果您使用 IMLib，可以使用此方法发送定向消息；如果您使用 IMKit，请使用 RongIM 中的同名方法发送定向消息，否则不会自动更新 UI。 从 5.6.
    `abstract void` | `sendImageMessage(ConversationType type, String targetId, MessageContent content, String pushContent, String pushData, RongIMClient.SendImageMessageCallback callback)` | 发送图片消息。 如果您使用IMLib，可以使用此方法发送图片消息； 如果您使用 IMKit，请使用 RongIM 中的同名方法发送图片消息，否则不会自动更新 UI。
    `abstract void` | `sendImageMessage(Message message, String pushContent, String pushData, RongIMClient.SendImageMessageCallback callback)` | 发送图片消息。 如果您使用IMLib，可以使用此方法发送图片消息；如果您使用 IMKit，请使用 RongIM 中的同名方法发送图片消息，否则不会自动更新 UI。
    `abstract void` | `sendImageMessage(Message message, String pushContent, String pushData, RongIMClient.SendImageMessageWithUploadListenerCallback callback)` | 发送图片消息。 该方法将图片上传到自己的服务器发送，同时更新图片状态。 使用该方法在上传图片时，会回调 io.rong.imlib.RongIMClient.
    `abstract void` | `downloadMedia(ConversationType conversationType, String targetId, RongIMClient.MediaType mediaType, String imageUrl, RongIMClient.DownloadMediaCallback callback)` | 下载多媒体文件。 如果本地缓存中包含此文件，则从本地缓存中直接获取，否则将从服务器端下载。
    `abstract void` | `downloadMediaMessage(Message message, IRongCallback.IDownloadMediaMessageCallback callback)` | 下载多媒体文件。
    `abstract void` | `downloadMediaFile(String fileUniqueId, String fileUrl, String fileName, String path, IRongCallback.IDownloadMediaFileCallback callback)` | 下载文件。 支持断点续传，对应的暂停下载须调用 pauseDownloadMediaFile。
    `abstract void` | `cancelSendMediaMessage(Message message, RongIMClient.OperationCallback callback)` | 取消发送多媒体文件。
    `abstract void` | `cancelDownloadMediaMessage(Message message, RongIMClient.OperationCallback callback)` | 取消多媒体消息下载。
    `abstract void` | `pauseDownloadMediaMessage(Message message, RongIMClient.OperationCallback callback)` | 暂停多媒体消息下载。
    `abstract void` | `pauseDownloadMediaFile(String fileUniqueId, RongIMClient.OperationCallback callback)` | 暂停多媒体文件下载。
    `abstract void` | `getConversationNotificationStatus(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<ConversationNotificationStatus> callback)` | 获取会话消息提醒状态。 注意：不支持聊天室！
    `abstract void` | `setConversationNotificationStatus(ConversationType conversationType, String targetId, ConversationNotificationStatus notificationStatus, RongIMClient.ResultCallback<ConversationNotificationStatus> callback)` | 设置会话消息提醒状态。 注意：不支持聊天室！
    `abstract String` | `getCurrentUserId()` | 获取当前连接用户的信息。
    `abstract long` | `getDeltaTime()` | 获取本地时间与服务器时间的时间差。 消息发送成功后，SDK 与服务器同步时间，消息所在数据库中存储的时间就是服务器时间。 System.
    `abstract void` | `clearConversations(RongIMClient.ResultCallback callback, Array<ConversationType> conversationTypes)` | 清空指定会话类型列表中的所有会话及会话消息。
    `abstract void` | `addToBlacklist(String userId, RongIMClient.OperationCallback callback)` | 将某个用户加入黑名单。 将对方加入黑名单后，对方再发消息时，提示"您的消息已经发出, 但被对方拒收"。但您仍然可以给对方发送消息。
    `abstract void` | `)>getPrivateDownloadToken(String fileName, ResultCallback<String> callback)` | 此接口仅适用于私有云 SDK 调用，当前版本不再适用，私有云用户使用新接口 getMediaUploadAuthorInfo
    `abstract void` | `removeFromBlacklist(String userId, RongIMClient.OperationCallback callback)` | 将某个用户从黑名单中移出。
    `abstract void` | `getBlacklistStatus(String userId, RongIMClient.ResultCallback<RongIMClient.BlacklistStatus> callback)` | 获取某用户是否在黑名单中。
    `abstract void` | `getBlacklist(RongIMClient.GetBlacklistCallback callback)` | 获取当前用户设置的黑名单列表。
    `abstract void` | `setNotificationQuietHours(String startTime, int spanMinutes, RongIMClient.OperationCallback callback)` | 设置消息通知免打扰时间。
    `abstract void` | `removeNotificationQuietHours(RongIMClient.OperationCallback callback)` | 移除消息通知免打扰时间。
    `abstract void` | `clearMessagesUnreadStatus(ConversationType conversationType, String targetId, long timestamp, RongIMClient.OperationCallback callback)` | 清除某个会话中的未读消息数。 注意：不支持聊天室！
    `abstract long` | `getSendTimeByMessageId(int messageId)` | 根据消息 id 获取消息发送时间。
    `abstract void` | `getNotificationQuietHours(RongIMClient.GetNotificationQuietHoursCallback callback)` | 获取消息通知免打扰时间。
    `abstract void` | `getMessageByUid(String uid, RongIMClient.ResultCallback<Message> callback)` | 通过全局唯一 id 获取消息实体。
    `abstract void` | `switchAppKey(String appKey)` | 切换 appKey。 当一个应用对应多个环境， 即多个 appKey 时， 调用此方法实现融云 SDK 热切换。 注意: 调用此方法后, 还需要再次调用 init 和 connect,传入新 appKey 对应的 token，重新初始化和连接。
    `abstract Collection<TypingStatus>` | `getTypingUserListFromConversation(ConversationType conversationType, String targetId)` | 获取会话正在输入的用户列表
    `abstract void` | `sendTypingStatus(ConversationType conversationType, String targetId, String typingContentType)` | 向会话中发送正在输入的状态，目前只支持单聊。
    `abstract void` | `sendReadReceiptMessage(ConversationType conversationType, String targetId, long timestamp)` | 发送某个会话中的消息阅读回执 使用 IMLib 可以注册监听 setReadReceiptListener；使用 IMkit 直接设置 rc_config.
    `abstract void` | `sendReadReceiptMessage(ConversationType conversationType, String targetId, long timestamp, IRongCallback.ISendMessageCallback callback)` | 发送某个会话中的消息阅读回执。 使用 IMLib 可以注册监听 setReadReceiptListener；使用 IMkit 直接设置 rc_config.
    `abstract void` | `setOnReceiveDestructionMessageListener(RongIMClient.OnReceiveDestructionMessageListener listener)` | 设置阅后即焚消息接收监听器
    `abstract void` | `recallMessage(Message message, String pushContent, RongIMClient.ResultCallback<RecallNotificationMessage> callback)` | 撤回消息
    `abstract void` | `getUnreadMentionedMessages(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<List<Message>> callback)` | 获取会话中未读的 @ 消息。
    `abstract void` | `sendMediaMessage(Message message, String pushContent, String pushData, IRongCallback.ISendMediaMessageCallback callback)` | 发送多媒体消息。 发送前构造 Message 消息实体，消息实体中的 content 必须为多媒体消息。 例如：ImageMessage 、 或其他继承自 MediaMessageContent 的消息。
    `abstract void` | `sendMediaMessage(Message message, String pushContent, String pushData, SendMessageOption option, IRongCallback.ISendMediaMessageCallback callback)` | 发送多媒体消息。 发送前构造 Message 消息实体，消息实体中的 content 必须为多媒体消息。 例如：ImageMessage 、 或其他继承自 MediaMessageContent 的消息。
    `abstract void` | `sendDirectionalMediaMessage(Message message, Array<String> userIds, String pushContent, String pushData, IRongCallback.ISendMediaMessageCallback callback)` | 发送定向多媒体消息。 向会话中特定的某些用户发送消息，会话中其他用户不会收到消息。 发送前构造 Message 消息实体，消息实体中的 content 必须为多媒体消息。 例如：ImageMessage 、 或其他继承自 MediaMessageContent 的消息。 从 5.6.
    `abstract void` | `sendMediaMessage(Message message, String pushContent, String pushData, IRongCallback.ISendMediaMessageCallbackWithUploader callback)` | 发送多媒体消息，可以使用该方法将多媒体文件上传到自己的服务器。 上传多媒体文件时，会回调 onAttached 此回调中携带 IRongCallback.MediaMessageUploader 对象，使用者只需要调用此对象中的 update 更新进度 success 更新成功状态，并告知上传成功后的文件地址 error 更新失败状态 cancel ()} 更新取消状态
    `abstract void` | `sendMediaMessage(Message message, String pushContent, String pushData, SendMessageOption option, IRongCallback.ISendMediaMessageCallbackWithUploader callback)` | 发送多媒体消息，可以使用该方法将多媒体文件上传到自己的服务器。 上传多媒体文件时，会回调 onAttached 此回调中携带 IRongCallback.MediaMessageUploader 对象，使用者只需要调用此对象中的 update 更新进度 success 更新成功状态，并告知上传成功后的文件地址 error 更新失败状态 cancel ()} 更新取消状态
    `abstract void` | `sendReadReceiptRequest(Message message, RongIMClient.OperationCallback callback)` | 发起消息已读回执请求（只支持群组和讨论组）。 注意：只能对自己发送的消息发起消息已读回执请求。
    `abstract void` | `sendReadReceiptResponse(ConversationType type, String targetId, List<Message> messageList, RongIMClient.OperationCallback callback)` | 发送已读回执（只支持群组和讨论组）
    `abstract void` | `syncConversationReadStatus(ConversationType type, String targetId, long timestamp, RongIMClient.OperationCallback callback)` | 同步会话阅读状态。
    `abstract void` | `setSyncConversationReadStatusListener(RongIMClient.SyncConversationReadStatusListener listener)` | 设置多端同步会话阅读状态监听。
    `abstract void` | `searchConversations(String keyword, Array<ConversationType> conversationTypes, Array<String> objectNames, RongIMClient.ResultCallback<List<SearchConversationResult>> resultCallback)` | 根据关键字搜索会话。 此方法可快速返回匹配的会话列表，并且会话中包含已匹配的消息数量。通过 {SearchConversationResult#getMatchCount()} 得到。注意：如果需要自定义消息也能被搜索到，需要在自定义消息中实现 getSearchableWord 方法。
    `abstract void` | `searchMessages(ConversationType conversationType, String targetId, String keyword, int count, long beginTime, RongIMClient.ResultCallback<List<Message>> resultCallback)` | 根据关键字搜索指定会话中的消息。 注意：如果需要自定义消息也能被搜索到，需要在自定义消息中实现 getSearchableWord 方法。
    `abstract void` | `searchMessagesByUser(ConversationType conversationType, String targetId, String userId, int count, long beginTime, RongIMClient.ResultCallback<List<Message>> resultCallback)` | 根据用户 id 搜索指定会话中的消息。 注意：如果需要自定义消息也能被搜索到，需要在自定义消息中实现 getSearchableWord 方法。
    `abstract void` | `getHistoryMessages(ConversationType conversationType, String targetId, long sentTime, int before, int after, RongIMClient.ResultCallback<List<Message>> resultCallback)` | 在会话中搜索指定消息的前 `before` 数量和 `after` 数量的消息。 返回的消息列表中会包含指定的消息。消息列表时间顺序从新到旧。
    `abstract void` | `getVendorToken(RongIMClient.ResultCallback<String> resultCallback)` | 获取登录者身份认证信息。 第三方厂商通过使用此接口获取 token，然后与厂商的注册信息一起去融云服务器做认证。
    `abstract void` | `setPushLanguage(RongIMClient.PushLanguage language, RongIMClient.OperationCallback callback)` | 设置远程推送语言，目前支持中文和英文。 注意：此功能需要从服务端开启用户设置功能。
    `abstract void` | `setPushLanguageCode(String language, RongIMClient.OperationCallback callback)` | 设置推送内容的自然语言。
    `abstract void` | `setPushContentShowStatus(boolean showStatus, RongIMClient.OperationCallback callback)` | 设置是否显示远程推送内容详情。 注意：此功能需要从服务端开启用户设置功能。
    `abstract void` | `setPushReceiveStatus(boolean receiveStatus, RongIMClient.OperationCallback callback)` | 设置是否接收远程推送。 前提：移动端未在线，Web 、MAC/PC 终端在线，移动端是否接收远程推送。注意：此功能需要从服务端开启用户设置功能。
    `abstract void` | `getPushLanguage(RongIMClient.ResultCallback<RongIMClient.PushLanguage> callback)` | 获取远程推送语言设置。
    `abstract void` | `getPushContentShowStatus(RongIMClient.ResultCallback<Boolean> callback)` | 获取是否显示远程推送内容详情设置。
    `abstract void` | `getPushReceiveStatus(RongIMClient.ResultCallback<Boolean> callback)` | 获取是否接收远程推送的设置。 前提: 移动端不在线，Web 、MAC/PC 终端在线，移动端是否接收远程推送。
    `abstract void` | `getOfflineMessageDuration(RongIMClient.ResultCallback<String> callback)` | 获取离线消息时间（以天为单位）。
    `abstract void` | `setOfflineMessageDuration(int duration, RongIMClient.ResultCallback<Long> callback)` | 设置离线消息在服务端的存储时间（以天为单位）。 注意：该功能需要客户提工单，在服务端开通此功能后，客户端调用该方法才生效。
    `abstract void` | `setAppVer(String appVer)` | 设置集成融云 SDK 的用户应用版本信息。 注意：需在 init 之后调用。
    `abstract void` | `supportResumeBrokenTransfer(String url, RongIMClient.ResultCallback<Boolean> callback)` | 判断是否支持断点续传。
    `abstract void` | `getTheFirstUnreadMessage(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Message> callback)` | 获取第一条未读消息。
    `abstract boolean` | `isFileDownloading(int messageId)` | 判断文件是否正在下载中。 注意：此方法只适用断点续传下载。
    `abstract boolean` | `isFileDownloading(String uid)` | 判断文件是否正在下载中。 注意：此方法只适用断点续传下载。
    `abstract void` | `setMessageReadTime(long messageId, long timestamp, RongIMClient.OperationCallback callback)` | 设置消息已读时间。
    `abstract int` | `getVideoLimitTime()` | 获取允许发送视频文件的最大时长。
    `abstract int` | `getGIFLimitSize()` | 获取允许发送 GIF 图片大小最大值。
    `abstract void` | `setReconnectKickEnable(boolean enable)` | 设置断线重连时是否踢出重连设备。 用户没有开通多设备登录功能的前提下，同一个账号在一台新设备上登录的时候，会把这个账号在之前登录的设备上踢出。 由于 SDK 有断线重连功能，存在下面情况： 用户在 A 设备登录，A 设备网络不稳定，没有连接成功，SDK 启动重连机制。 用户此时又在 B 设备登录，B 设备连接成功。 A 设备网络稳定之后，用户在 A 设备连接成功，B 设备被踢出。 这个接口就是为这种情况加的。 设置 enable 为 `true` 时，SDK 重连的时候发现此时已有别的设备连接成功，不再强行踢出已有设备，而是踢出重连设备。 此方法需要在 init之前调用。
    `abstract void` | `appOnStart()` | 通知 SDK 应用回到前台。 注意：该方法必须在 init 之后调用。
    `abstract void` | `setRLogLevel(int pLevel)` | 设置业务日志写文件等级。 接口及时生效。
    `abstract void` | `setRLogFileMaxSize(long pSize)` | 设置业务日志文件大小，默认 1M。 接口及时生效，超过设置大小压缩成 zip 文件存放到本地。
    `abstract void` | `setUploadCallback(UploadCallback pCallback)` | 设置上传 RLog 日志到服务器的回调
    `abstract void` | `uploadRLog()` | 上传 RLog 日志 在 connect 成功后调用
    `abstract void` | `beginDestructMessage(Message message, RongIMClient.DestructCountDownTimerListener pListener)` | 开始焚烧消息，仅支持单聊。
    `abstract void` | `stopDestructMessage(Message message)` | 取消焚烧消息，仅支持单聊。
    `abstract void` | `cancelSDKHeartBeat()` | 取消 wakelock 心跳，在连接成功之后调用，整个应用程序全局只需要调用一次。
    `abstract void` | `sendPing()` | OEM 实现心跳对齐，发送 Ping 接口 1.后台 WakeLock 心跳 2.
    `abstract void` | `setConversationStatusListener(RongIMClient.ConversationStatusListener listener)` | 设置会话状态（置顶和免打扰）多端同步监听
    `abstract void` | `setMessageExpansionListener(RongIMClient.MessageExpansionListener listener)` | 设置消息扩展监听
    `abstract void` | `updateMessageExpansion(Map<String, String> expansion, String messageUId, RongIMClient.OperationCallback callback)` | 更新消息扩展信息 每条消息携带扩展信息键值对最大值 300个，单次设置扩展信息键值对最大值 20个
    `abstract void` | `removeMessageExpansion(List<String> keyArray, String messageUId, RongIMClient.OperationCallback callback)` | 删除消息扩展信息中特定的键值对
    `abstract void` | `getChatroomHistoryMessages(String targetId, long recordTime, int count, RongIMClient.TimestampOrder order, IRongCallback.IChatRoomHistoryMessageCallback callback)` | 获取聊天室历史消息。 从服务器端获取聊天室之前的历史消息，如果指定时间 0，则从存储的第一条消息开始拉取。注意：必须先开通聊天室消息云存储功能。
    `abstract void` | `getChatRoomInfo(String chatRoomId, int defMemberCount, ChatRoomMemberOrder order, RongIMClient.ResultCallback<ChatRoomInfo> callback)` | 获取聊天室的信息（包含部分成员信息和当前聊天室中的成员总数）。 注意： 因为聊天室一般成员数量巨大，权衡效率和用户体验，目前返回的聊天室信息仅包含不多于 20 人的成员信息和当前成员总数。 如果您使用 RC_ChatRoom_Member_Asc 升序方式查询，将返回最早加入的成员信息列表； 如果您使用 RC_ChatRoom_Member_Desc 降序方式查询，将返回最晚加入的成员信息列表。 上述两种方式查询，返回的成员列表都是按加入时间从旧到新。 `
    `abstract void` | `joinChatRoom(String chatRoomId, int defMessageCount, RongIMClient.OperationCallback callback)` | 加入聊天室。 如果聊天室不存在，SDK 会创建聊天室并加入，如果已存在，则直接加入。 可以通过传入的 defMessageCount 设置加入聊天室成功之后需要获取的历史消息数量。 -1 表示不获取任何历史消息，0 表示不特殊设置而使用 sdk 默认的设置（默认为获取 10 条），defMessageCount `0 < defMessageCount <= 50` 为获取的消息数量，最大值为 50。
    `abstract void` | `joinExistChatRoom(String chatRoomId, int defMessageCount, RongIMClient.OperationCallback callback)` | 加入已存在的聊天室。 如果聊天室不存在，则加入失败。加入聊天室时，可以设置拉取聊天室消息数目。
    `abstract void` | `bindChatRoomWithRTCRoom(String chatRoomId, String RTCRoomId, RongIMClient.OperationCallback callback)` | 绑定chatRoom和RTCRoom，当在RTCRoom开启时如需调用ChatRoom调用此方法。
    `abstract void` | `quitChatRoom(String chatRoomId, RongIMClient.OperationCallback callback)` | 退出聊天室。
    `abstract void` | `setChatRoomEntry(String chatRoomId, String key, String value, boolean sendNotification, boolean autoDelete, String notificationExtra, RongIMClient.OperationCallback callback)` | 设置聊天室自定义属性。 key 不存在，增加属性； key 已存在，只能更新当前用户设置的属性值。注意：必须先开通聊天室状态存储功能。
    `abstract void` | `forceSetChatRoomEntry(String chatRoomId, String key, String value, boolean sendNotification, boolean autoDelete, String notificationExtra, RongIMClient.OperationCallback callback)` | 强制设置聊天室自定义属性。 key 不存在，增加属性； key 已存在，更新属性的值。注意：必须先开通聊天室状态存储功能。
    `abstract void` | `getChatRoomEntry(String chatRoomId, String key, RongIMClient.ResultCallback<Map<String, String>> callback)` | 获取聊天室单个属性。 注意：必须先开通聊天室状态存储功能。
    `abstract void` | `getAllChatRoomEntries(String chatRoomId, RongIMClient.ResultCallback<Map<String, String>> callback)` | 获取聊天室所有属性。 注意：必须先开通聊天室状态存储功能。
    `abstract void` | `removeChatRoomEntry(String chatRoomId, String key, Boolean sendNotification, String notificationExtra, RongIMClient.OperationCallback callback)` | 删除聊天室自定义属性。 注意： 1.
    `abstract void` | `forceRemoveChatRoomEntry(String chatRoomId, String key, Boolean sendNotification, String notificationExtra, RongIMClient.OperationCallback callback)` | 强制删除聊天室自定义属性。 注意：必须先开通聊天室状态存储功能。
    `abstract void` | `setKVStatusListener(RongIMClient.KVStatusListener listener)` | 设置聊天室 KV 状态变化的监听
    `abstract void` | `searchPublicService(RongIMClient.SearchType searchType, String keywords, RongIMClient.ResultCallback<PublicServiceProfileList> callback)` | 搜索公众服务。
    `abstract void` | `searchPublicServiceByType(PublicServiceType publicServiceType, RongIMClient.SearchType searchType, String keywords, RongIMClient.ResultCallback<PublicServiceProfileList> callback)` | 按公众服务类型搜索公众服务。
    `abstract void` | `subscribePublicService(PublicServiceType publicServiceType, String publicServiceId, RongIMClient.OperationCallback callback)` | 订阅公众号。
    `abstract void` | `unsubscribePublicService(PublicServiceType publicServiceType, String publicServiceId, RongIMClient.OperationCallback callback)` | 取消订阅公众号。
    `abstract void` | `getPublicServiceProfile(PublicServiceType publicServiceType, String publicServiceId, RongIMClient.ResultCallback<PublicServiceProfile> callback)` | 获取某公共服务信息。
    `abstract void` | `getPublicServiceList(RongIMClient.ResultCallback<PublicServiceProfileList> callback)` | 获取己关注公共账号列表。
    `abstract void` | `getDiscussion(String discussionId, RongIMClient.ResultCallback<Discussion> callback)` | 获取讨论组的信息。
    `abstract void` | `setDiscussionName(String discussionId, String name, RongIMClient.OperationCallback callback)` | 设置讨论组名称。
    `abstract void` | `createDiscussion(String name, List<String> userIdList, RongIMClient.CreateDiscussionCallback callback)` | 创建讨论组。
    `abstract void` | `addMemberToDiscussion(String discussionId, List<String> userIdList, RongIMClient.OperationCallback callback)` | 将用户加入讨论组。
    `abstract void` | `removeMemberFromDiscussion(String discussionId, String userId, RongIMClient.OperationCallback callback)` | 讨论组踢人，将用户移出讨论组。 如果当前登陆用户不是此讨论组的创建者并且此讨论组没有开放加人权限，则会返回错误。不能使用此接口将自己移除，否则会返回错误。 如果您需要退出该讨论组，可以使用 quitDiscussion 方法。
    `abstract void` | `quitDiscussion(String discussionId, RongIMClient.OperationCallback callback)` | 退出当前讨论组。
    `abstract void` | `setDiscussionInviteStatus(String discussionId, RongIMClient.DiscussionInviteStatus status, RongIMClient.OperationCallback callback)` | 设置讨论组成员邀请权限。
    `abstract RealTimeLocationErrorCode` | `getRealTimeLocation(ConversationType conversationType, String targetId)` | 获取 RealTimeLocation 实例。 使用时，每次进入会话，获取该会话对应的实例，以此判断位置共享业务是否可用或者正在进行中。 如果获取实例失败，返回 error code，对应具体的失败信息。 如果返回成功，使用者可以设置监听，发起位置共享。 如果返回正在进行中，则是对方已发起位置共享，使用者可以设置监听，加入。 如果返回其他失败信息，使用者可以据此做出相应的提示。
    `abstract RealTimeLocationErrorCode` | `startRealTimeLocation(ConversationType conversationType, String targetId)` | 发起位置共享。
    `abstract RealTimeLocationErrorCode` | `joinRealTimeLocation(ConversationType conversationType, String targetId)` | 加入位置共享。
    `abstract void` | `quitRealTimeLocation(ConversationType conversationType, String targetId)` | 退出位置共享。
    `abstract List<String>` | `getRealTimeLocationParticipants(ConversationType conversationType, String targetId)` | 获取位置共享的所有成员。
    `abstract RealTimeLocationStatus` | `getRealTimeLocationCurrentState(ConversationType conversationType, String targetId)` | 获取位置共享状态。
    `abstract void` | `addRealTimeLocationListener(ConversationType conversationType, String targetId, RongIMClient.RealTimeLocationListener listener)` | 添加位置共享监听。
    `abstract void` | `removeRealTimeLocationObserver(ConversationType conversationType, String targetId)` | 移除位置共享监听。
    `abstract void` | `updateRealTimeLocationStatus(ConversationType conversationType, String targetId, double latitude, double longitude, RealTimeLocationType realTimeLocationType)` | 更新位置共享信息。
    `abstract void` | `startCustomService(String kefuId, ICustomServiceListener listener, CSCustomServiceInfo customServiceInfo)` | 启动客服服务。
    `abstract void` | `selectCustomServiceGroup(String kefuId, String groupId)` | 发送转人工客服消息
    `abstract void` | `switchToHumanMode(String kefuId)` | 切换到人工客服模式。 切换的结果需要在 onModeChanged 方法回调中处理。 如果客服没有分组， 则直接切人工模式；如果客服有分组，那么需要在回调onSelectGroup 中去弹出分组选择窗口并选择分组，之后在这个回调中调用 selectCustomServiceGroup 根据客服 id 和 分组 id 切换到人工模式。 客服模式 io.rong.imlib.cs.model.
    `abstract void` | `evaluateCustomService(String kefuId, boolean isRobotResolved, String knowledgeId)` | 评价机器人客服，用于人工机器人分开评价。 当建立客服连接时，返回的 CustomServiceConfig.
    `abstract void` | `evaluateCustomService(String kefuId, int source, String suggest, String dialogId)` | 评价机器人客服，用于人工机器人分开评价。 当建立客服连接时，返回的 CustomServiceConfig.
    `abstract void` | `evaluateCustomService(String kefuId, int source, CSEvaSolveStatus resolvestatus, String tagText, String suggest, String dialogId, String extra)` | 评价机器人客服，用于人工机器人分开评价。 当建立客服连接时，返回的 CustomServiceConfig.
    `abstract void` | `evaluateCustomService(String kefuId, int source, CSEvaSolveStatus solveStatus, String suggest, String dialogId)` | 评价机器人客服，用于人工机器人统一评价。 当建立客服连接时，返回的 CustomServiceConfig.
    `abstract void` | `leaveMessageCustomService(String kefuId, Map<String, String> contentMap, RongIMClient.OperationCallback operationCallback)` | 客服留言。
    `abstract void` | `stopCustomService(String kefuId)` | 退出客服服务。
    `abstract void` | `setCustomServiceHumanEvaluateListener(OnHumanEvaluateListener listener)` | 设置人工评价监听。 当人工评价有标签等配置时，在回调中返回配置。
    `abstract void` | `batchInsertMessage(List<Message> messages, RongIMClient.ResultCallback<Boolean> callback)` | 批量插入接收的消息（该消息只插入本地数据库，实际不会发送给服务器和对方） Message 下列属性会被入库，其余属性会被抛弃 conversationType 会话类型 targetId 会话 ID messageDirection 消息方向 senderUserId 发送者 ID receivedStatus 接收状态；消息方向为接收方且未调用 message.getReceivedStatus().
    `abstract void` | `getDownloadInfo(String tag, RongIMClient.ResultCallback<DownloadInfo> callback)` | 获取媒体文件下载信息。 注意：此方法只适用断点续传下载。
    `abstract void` | `setMessageBlockListener(MessageBlockListener listener)` | 设置发送含有敏感词消息被拦截的监听
    `abstract boolean` | `setProxy(RCIMProxy proxy)` |
    `abstract RCIMProxy` | `getCurrentProxy()` |
    `abstract void` | `testProxy(RCIMProxy proxy, String testHost, RongIMClient.Callback callback)` |

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### RongIMClient

          RongIMClient()

  - ### Method Detail

    - #### getInstance

           static RongIMClient getInstance()

      获取 IMLib 接口类实例，需在执行 init 方法初始化 SDK 后获取, 否则返回值为 NULL。

      Returns:

        IMLib 接口类实例。

    - #### init

           static void init(Application application, String appKey)

      初始化融云 SDK，在整个应用程序全局只需要调用一次。

      只能在主进程调用，建议在 Application 继承类中调用。

      Parameters:
        `application` - Application 类对象。
        `appKey` - 从融云开发者平台创建应用后获取到的 App Key。

    - #### init

           static void init(Context context)

      初始化 SDK，在整个应用程序全局只需要调用一次, 建议在 Application 继承类中调用。

      Parameters:
        `context` - Application 类的 Context。

    - #### init

           static void init(Context context, String appKey)

      初始化 SDK，在整个应用程序全局只需要调用一次, 建议在 Application 继承类中调用。

      Parameters:
        `context` - Application 类的 Context。
        `appKey` - 从融云开发者平台创建应用后获取到的 App Key。 此参数可选。如果不传值，SDK 会使用 AndroidManifest.

    - #### init

           static void init(Context context, String appKey, boolean enablePush)

      初始化 SDK，在整个应用程序全局只需要调用一次, 建议在 Application 继承类中调用。

      Parameters:
        `context` - Application 类的 Context。
        `appKey` - 从融云开发者平台创建应用后获取到的 App Key。 此参数可选。如果不传值，SDK 会使用 AndroidManifest.
        `enablePush` - 是否使用推送功能。 `true` 启用推送； `false` 关闭推送。

    - #### init

           static void init(Context context, String appKey, boolean enablePush, Boolean isMainProcess)

      初始化 SDK，在整个应用程序全局只需要调用一次, 建议在 Application 继承类中调用。

      Parameters:
        `context` - Application 类的 Context。
        `appKey` - 从融云开发者平台创建应用后获取到的 App Key。 此参数可选。如果不传值，SDK 会使用 AndroidManifest.
        `enablePush` - 是否使用推送功能。 `true` 启用推送； `false` 关闭推送。
        `isMainProcess` - 是否为主进程。如果为null，则代表由SDK判断进程

    - #### connect

           static RongIMClient connect(String token, RongIMClient.ConnectCallback connectCallback)

      连接融云服务器，在整个应用程序全局，只需要调用一次，需在 init 之后调用。

      调用此接口返回非业务错误码时，SDK 会启动重连机制进行重连；如果仍没有连接成功，会在设备网络状态变化时再次进行重连。如果您使用 IMKit，请使用 RongIM 中的同名方法建立与融云服务器的连接，而不要使用此方法。

      调用该接口，SDK 会在连接失败之后尝试重连，将出现以下两种情况： 第一、连接成功，回调 onSuccess(userId)。 第二、出现 SDK 无法处理的错误，回调 onError(errorCode)（如 token 非法），并不再重连。

      如果您不想一直进行重连，可以使用 connect(String,int,ConnectCallback) 接口并设置连接超时时间 timeLimit

      Parameters:
        `token` - 从服务端获取的用户身份令牌（Token）。
        `connectCallback` - 连接回调扩展类，新增打开数据库的回调（OnDatabaseOpened(DatabaseOpenStatus)），会返回数据库打开的状态，； `DATABASE_OPEN_SUCCESS` 执行拉取会话列表操作，`DATABASE_OPEN_ERROR` 不处理。如连接失败，参见 ConnectionErrorCode 错误码具体说明。
      Returns:

        RongIMClient IM 客户端核心类的实例。

    - #### connect

           static RongIMClient connect(String token, int timeLimit, RongIMClient.ConnectCallback connectCallback)

      连接融云服务器，在整个应用程序全局，只需要调用一次，需在 init 之后调用。

      调用此接口返回非业务错误码时，SDK 会启动重连机制进行重连；如果仍没有连接成功，会在设备网络状态变化时再次进行重连。如果您使用 IMKit，请使用 RongIM 中的同名方法建立与融云服务器的连接，而不要使用此方法。

      Parameters:
        `token` - 从服务端获取的用户身份令牌（Token）。
        `timeLimit` - 连接超时时间，单位：秒。`timeLimit <= 0`，则 IM 将一直连接，直到连接成功或者无法连接（如 token 非法） `timeLimit > 0` ,则 IM 将最多连接 timeLimit 秒： 如果在 timeLimit 秒内连接成功，后面再发生了网络变化或前后台切换，SDK 会自动重连； 如果在 timeLimit 秒无法连接成功则不再进行重连，通过 onError 告知连接超时，您需要再自行调用 connect 接口
        `connectCallback` - 连接回调扩展类，新增打开数据库的回调（OnDatabaseOpened(DatabaseOpenStatus)），会返回数据库打开的状态，； `DATABASE_OPEN_SUCCESS` 执行拉取会话列表操作，`DATABASE_OPEN_ERROR` 不处理。如连接失败，参见 ConnectionErrorCode 错误码具体说明。
      Returns:

        RongIMClient IM 客户端核心类的实例。

    - #### getVersion

           static String getVersion()

    - #### setConnectionStatusListener

           static void setConnectionStatusListener(RongIMClient.ConnectionStatusListener listener)

      设置连接状态变化的监听器。

      当回调的状态为 TOKEN_INCORRECT, 需要获取正确的token, 并主动调用connect。 如果使用 IMKit，使用 RongIM 中同名方法 `setConnectionStatusListener` 。 removeNotificationQuietHours

      Parameters:
        `listener` - 连接状态变化的监听器。

    - #### setOnReceiveMessageListener

          @Deprecated() static void setOnReceiveMessageListener(OnReceiveMessageListener listener)

      设置接收消息事件的监听器。 注意:建议设置应用生命周期的全局监听器。

      Parameters:
        `listener` - 接收消息的监听器。 @Deprecated 此接口已经废弃，请使用addOnReceiveMessageListener

    - #### addOnReceiveMessageListener

           static boolean addOnReceiveMessageListener(OnReceiveMessageWrapperListener listener)

      添加接收消息事件的监听器。 注意:建议设置应用生命周期的全局监听器。

      Parameters:
        `listener` - 接收消息的监听器。
      Returns:

        添加是否成功

    - #### removeOnReceiveMessageListener

           static boolean removeOnReceiveMessageListener(OnReceiveMessageWrapperListener listener)

      移除接收消息事件的监听器。

      Parameters:
        `listener` - 接收消息的监听器。
      Returns:

        移除是否成功

    - #### registerMessageType

          @Deprecated() static void registerMessageType(Class<out MessageContent> messageContentClass)

      注册自定义消息类型

      请在初始化之后，连接之前调用该方法注册自定义消息。

      Parameters:
        `messageContentClass` - 自定义消息的类，必须要继承自 io.rong.imlib.model.

    - #### registerMessageType

           static void registerMessageType(List<Class<out MessageContent>> messageContentClassList)

      批量注册自定义消息类型

      请在初始化之后，连接之前调用该方法注册自定义消息。

      Parameters:
        `messageContentClassList` - 自定义消息的类列表，列表中的每项必须要继承自 。

    - #### setTypingStatusListener

           static void setTypingStatusListener(RongIMClient.TypingStatusListener listener)

      设置输入状态监听器。

      当输入状态发生变化时，回调 onTypingStatusChanged。 对于单聊而言，当对方正在输入时，监听会触发一次；当对方不处于输入状态时，该监听还会触发一次，但回调里输入用户列表为空。

      Parameters:
        `listener` - 输入状态监听器

    - #### setRCLogInfoListener

           static void setRCLogInfoListener(RongIMClient.RCLogInfoListener listener)

      设置 Log 输出监听。

      注意：需要在 connect 之前调用！

      Parameters:
        `listener` - Log 输出监听器

    - #### setReadReceiptListener

           static void setReadReceiptListener(RongIMClient.ReadReceiptListener listener)

      设置消息回执监听器。

      当收到消息回执时回调 onReadReceiptReceived。

      Parameters:
        `listener` - 消息回执监听器

    - #### setServerInfo

           static void setServerInfo(String naviServer, String fileServer)

      设置私有部署的导航服务器和媒体服务器地址。

      可以支持设置 http://cn.xxx.com 或 https://cn.xxx.com 或 cn.xxx.com， 如果设置成 cn.xxx.com，SDK 会组装成 http:// 协议格式。 支持传入多个导航, 多个导航地址之间须以分号 ； 分隔。注意：此方法在 init 前使用！

      Parameters:
        `naviServer` - 私有部署的导航服务器地址。
        `fileServer` - 私有部署的媒体服务器地址，即文件和图片的上传地址。使用私有云时必须填写。

    - #### setStatisticDomain

           static void setStatisticDomain(String domain)

      配置数据上传地址 （非必须）。

      配置此地址，SDK 会在初始化时把设备相关信息上传到私有云节点。影响到的功能是开发者后台的广播推送功能，如果私有云客户没有配置该地址，那从后台发推送时，客户端是收不到的。普通的 IM 推送不受影响。 设置数据上传服务器地址。 可以支持设置 http://cn.xxx.com 或者 https://cn.xxx.com 或者 cn.xxx.com。 如果设置成 cn.xxx.com，SDK 会组装成 http:// 协议格式。

      Parameters:
        `domain` - 域名

    - #### setOnRecallMessageListener

           static void setOnRecallMessageListener(RongIMClient.OnRecallMessageListener listener)

      设置撤回消息监听器

      Parameters:
        `listener` - 撤回消息监听器

    - #### setChatRoomActionListener

           static void setChatRoomActionListener(RongIMClient.ChatRoomActionListener listener)

      设置聊天室操作监听。

      开发者可以通过设置监听，获取加入聊天室的状态回调。

      Parameters:
        `listener` - 监听对象。

    - #### getCurrentConnectionStatus

           abstract RongIMClient.ConnectionStatusListener.ConnectionStatus getCurrentConnectionStatus()

      获取当前 IM 服务连接状态。

      Returns:

        当前连接状态 ConnectionStatusListener.ConnectionStatus。

    - #### getTopForegroundActivity

           abstract Activity getTopForegroundActivity()

      获取处于前台的最上层 Activity。

      Returns:

        当前应用在前台，返回最上层 Activity；当前应用在后台,返回 NULL。

    - #### logout

           abstract void logout()

      断开与融云服务器的连接，并且不再接收远程推送消息。

      若想断开连接后仍然接受远程推送消息，可以调用 disconnect

    - #### disconnect

           abstract void disconnect()

      断开与融云服务器的连接，但仍然接收远程推送。

      若想断开连接后不接受远程推送消息，可以调用logout。注意：因为 SDK 在前后台切换或者网络出现异常都会自动重连，保证连接可靠性。 所以除非您的 App 逻辑需要登出，否则一般不需要调用此方法进行手动断开。

    - #### disconnect

           abstract void disconnect(boolean isReceivePush)

      断开与融云服务器的连接，根据参数选择是否继续接收远程推送。

      Parameters:
        `isReceivePush` - `true` 断开后接收远程推送；`false` 断开后不再接收远程推送。

    - #### getConversationList

           abstract void getConversationList(RongIMClient.ResultCallback<List<Conversation>> callback)

      获取当前用户本地会话列表，该方法返回的是以下类型的会话列表：私聊，群组，讨论组，系统会话。

      此方法会从本地数据库中，读取会话列表。返回的会话列表排序规则为:按照时间从前往后排列，如果有置顶的会话，则置顶的会话会排列在前面。 如果您需要获取其它类型的会话列表,可以使用getConversationList 。 需要在连接数据库打开回调 `OnDatabaseOpened` 后调用，ConnectCallback 。

      Parameters:
        `callback` - 获取会话列表的回调。

    - #### getConversationList

           abstract void getConversationList(RongIMClient.ResultCallback<List<Conversation>> callback, Array<ConversationType> conversationTypes)

      根据会话类型，获取当前用户的本地会话列表。

      Parameters:
        `callback` - 获取会话列表的回调。
        `conversationTypes` - 要获取的会话类型。

    - #### getTopConversationList

           abstract void getTopConversationList(RongIMClient.ResultCallback<List<Conversation>> callback, Array<ConversationType> conversationTypes)

      根据会话类型,获取置顶会话列表

    - #### getConversationListByPage

           abstract void getConversationListByPage(RongIMClient.ResultCallback<List<Conversation>> callback, long timeStamp, int count, Array<ConversationType> conversationTypes)

      分页获取会话列表。

      Parameters:
        `callback` - 获取会话列表的回调。
        `timeStamp` - 时间戳（毫秒），通过获取从此时间戳往前的会话，传入 0 表示从最新会话开始获取。参考 getSentTime 。
        `count` - 取回的会话数量。当实际取回的会话数量小于 count 值时，表明已取完数据。 建议此数值不要超过 10 个，当一次性获取的会话数过大时， 会导致跨进程通信崩溃，引发获取会话列表失败及通信连接被中断。
        `conversationTypes` - 要获取的会话类型。

    - #### getBlockedConversationList

           abstract void getBlockedConversationList(RongIMClient.ResultCallback<List<Conversation>> callback, Array<ConversationType> conversationTypes)

      获取免打扰的会话列表。

      Parameters:
        `callback` - 获取免打扰会话的回调。
        `conversationTypes` - 会话类型，io.rong.imlib.model.Conversation.

    - #### getConversation

           abstract void getConversation(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Conversation> callback)

      获取单个会话信息。

      Parameters:
        `conversationType` - 会话类型。参考 io.rong.imlib.model.Conversation.
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。
        `callback` - 获取会话信息的回调。

    - #### updateConversationInfo

           abstract void updateConversationInfo(ConversationType conversationType, String targetId, String title, String portrait, RongIMClient.ResultCallback callback)

      更新会话信息。

      Parameters:
        `conversationType` - 会话类型 io.rong.imlib.model.Conversation.
        `targetId` - 会话 id
        `title` - 会话标题
        `portrait` - 会话头像
        `callback` - 回调

    - #### removeConversation

           abstract void removeConversation(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Boolean> callback)

      从会话列表中移除某一会话。

      此方法不删除会话内的消息。如果此会话中有新的消息，该会话将重新在会话列表中显示，并显示最近的历史消息。

      Parameters:
        `conversationType` - 会话类型 io.rong.imlib.model.Conversation.
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。
        `callback` - 移除会话是否成功的回调，回调类型是 Boolean，`ResultCallback<Boolean>` 。

    - #### setConversationToTop

           abstract void setConversationToTop(ConversationType conversationType, String id, boolean isTop, RongIMClient.ResultCallback<Boolean> callback)

      设置会话的置顶状态。

      会话置顶：设置此会话在会话列表的第一条（当有多个会话置顶时，按照设置时间排序，先设置的在前）。 例：依次设置 A、B、C 会话置顶，会话排序依次为 A、B、C。 会话不存在时设置置顶，会在会话列表生成会话；设置置顶之后删除会话，置顶设置自动失效。

      Parameters:
        `conversationType` - 会话类型 io.rong.imlib.model.Conversation.
        `id` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。
        `isTop` - 是否置顶。
        `callback` - 设置置顶是否成功的回调。

    - #### setConversationToTop

           abstract void setConversationToTop(ConversationType conversationType, String id, boolean isTop, boolean needCreate, RongIMClient.ResultCallback<Boolean> callback)

      设置会话的置顶状态。

      若会话不存在，调用此方法 SDK 自动创建会话并置顶。

      Parameters:
        `conversationType` - 会话类型 io.rong.imlib.model.Conversation.
        `id` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。
        `isTop` - 是否置顶。
        `needCreate` - 会话不存在时，是否创建会话。
        `callback` - 设置置顶是否成功的回调。

    - #### getTotalUnreadCount

           abstract void getTotalUnreadCount(RongIMClient.ResultCallback<Integer> callback)

      获取所有会话的总未读消息数。

      注意：不包含聊天室，聊天室消息不计数。

      Parameters:
        `callback` - 未读消息数的回调。

    - #### getTotalUnreadCount

           abstract void getTotalUnreadCount(RongIMClient.ResultCallback<Integer> callback, Array<Conversation> conversations)

      获取所有指定会话的总未读消息数。

      注意：不包含聊天室，聊天室消息不计数。

      Parameters:
        `callback` - 获取指定会话总未读数的回调。
        `conversations` - 指定会话。

    - #### getUnreadCount

           abstract void getUnreadCount(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Integer> callback)

      获取指定会话的未读消息数。

      注意：不包含聊天室，聊天室消息不计数。

      Parameters:
        `conversationType` - 会话类型 io.rong.imlib.model.Conversation.
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id。
        `callback` - 未读消息数的回调。

    - #### getUnreadCount

           abstract void getUnreadCount(RongIMClient.ResultCallback<Integer> callback, Array<ConversationType> conversationTypes)

      获取指定会话类型的总未读消息数。

      注意：不包含聊天室，聊天室消息不计数。

      Parameters:
        `callback` - 未读消息数的回调。
        `conversationTypes` - 会话类型，可传多个会话类型。

    - #### getUnreadCount

           abstract void getUnreadCount(Array<ConversationType> conversationTypes, boolean containBlocked, RongIMClient.ResultCallback<Integer> callback)

      获取指定会话类型的总未读消息数。

      注意：不包含聊天室，聊天室消息不计数。

      Parameters:
        `conversationTypes` - 会话类型数组 io.rong.imlib.model.Conversation.
        `containBlocked` - 是否包含免打扰消息的未读消息数。
        `callback` - 未读消息数的回调。

    - #### getUnreadCount

           abstract void getUnreadCount(Array<ConversationType> conversationTypes, RongIMClient.ResultCallback<Integer> callback)

      获取指定会话类型的总未读消息数。

      注意：不包含聊天室，聊天室消息不计数。

      Parameters:
        `conversationTypes` - 会话类型数组 io.rong.imlib.model.Conversation.
        `callback` - 未读消息数的回调。

    - #### getMessageCount

           abstract void getMessageCount(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Integer> callback)

      获取指定会话的消息总数。

      Parameters:
        `conversationType` - 会话类型 io.rong.imlib.model.Conversation.
        `targetId` - 会话 id。
        `callback` - 消息总数的回调。

    - #### getLatestMessages

           abstract void getLatestMessages(ConversationType conversationType, String targetId, int count, RongIMClient.ResultCallback<List<Message>> callback)

      获取指定会话的最新消息。

      Parameters:
        `conversationType` - 会话类型 io.rong.imlib.model.Conversation.
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。
        `count` - 需要获取的消息数量。
        `callback` - 获取最新消息的回调，按照时间顺序从新到旧排列，如果会话中的消息数量小于参数 count 的值，会将该会话中的所有消息返回。

    - #### getHistoryMessages

          @Deprecated() abstract List<Message> getHistoryMessages(ConversationType conversationType, String targetId, int oldestMessageId, int count)

      获取会话中符合条件的消息列表。

      Parameters:
        `conversationType` - 会话类型 io.rong.imlib.model.Conversation.
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id。
        `oldestMessageId` - 最后一条消息的 id，获取此消息之前的 count 条消息，没有消息第一次调用应设置为:-1。
        `count` - 要获取的消息数量。
      Returns:

        历史消息，按照时间顺序从新到旧排列。

    - #### getHistoryMessages

          @Deprecated() abstract List<Message> getHistoryMessages(ConversationType conversationType, String targetId, String objectName, int oldestMessageId, int count)

      获取会话中符合条件的消息列表。

      Parameters:
        `conversationType` - 会话类型 io.rong.imlib.model.Conversation.
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id。
        `objectName` - 消息类型标识。
        `oldestMessageId` - 最后一条消息的 id，获取此消息之前的 count 条消息,没有消息第一次调用应设置为:-1。
        `count` - 要获取的消息数量。
      Returns:

        历史消息，按照时间顺序从新到旧排列。

    - #### getHistoryMessages

           abstract void getHistoryMessages(ConversationType conversationType, String targetId, String objectName, int oldestMessageId, int count, RongIMClient.ResultCallback<List<Message>> callback)

      获取会话中符合条件的消息列表。

      返回的消息中不包含 oldestMessageId 对应那条消息，如果会话中的消息数量小于参数 count 的值，会将该会话中的所有消息返回。 如：oldestMessageId 为 10，count 为 2，会返回 messageId 为 9 和 8 的 Message 对象列表。

      Parameters:
        `conversationType` - 会话类型 io.rong.imlib.model.Conversation.
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 。
        `objectName` - 消息类型标识。
        `oldestMessageId` - 最后一条消息的 Id，获取此消息之前的 count 条消息,没有消息第一次调用应设置为:-1。
        `count` - 要获取的消息数量
        `callback` - 获取历史消息的回调，按照时间顺序从新到旧排列。

    - #### getHistoryMessages

           abstract void getHistoryMessages(ConversationType conversationType, String targetId, String objectName, int baseMessageId, int count, GetMessageDirection direction, RongIMClient.ResultCallback<List<Message>> callback)

      获取会话中符合条件的消息列表。

      如：获取 messageId 为 22 的之前的 10条 图片消息，则相应参数为 getHistoryMessages(conversationType, targetId, "RC:ImgMsg", 22, 10, true, resultCallback)。

      Parameters:
        `conversationType` - 会话类型 io.rong.imlib.model.Conversation.
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id。
        `objectName` - 消息类型标识。如 RC:TxtMsg，RC:ImgMsg，RC:VcMsg 等 value 。
        `baseMessageId` - 起始消息 id。
        `count` - 需要获取的消息数量。
        `direction` - 要获取的消息相对于 baseMessageId 的方向 以指定的 baseMessageId 作为获取的起始点，时间早于 baseMessageId 则为 FRONT，晚于则为 BEHIND。
        `callback` - 获取历史消息的回调，按照时间顺序从新到旧排列。

    - #### getHistoryMessages

           abstract void getHistoryMessages(ConversationType conversationType, String targetId, List<String> objectNames, long timestamp, int count, GetMessageDirection direction, RongIMClient.ResultCallback<List<Message>> callback)

      获取会话中符合条件的消息列表。

      如： 要获取 messageId 为 22 的之前的 10 条图片消息，和文字消息 objectNames 为字符串 List

          objectNames.add("RC:ImgMsg");
          objectNames.add("RC:TxtMsg");

      则相应参数为 getHistoryMessages(conversationType, targetId, objectNames, 22, 10, true, resultCallback)。

      Parameters:
        `conversationType` - 会话类型 io.rong.imlib.model.Conversation.
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id。
        `objectNames` - 消息类型标识 List。如 RC:TxtMsg，RC:ImgMsg，RC:VcMsg 等构成的 List。
        `timestamp` - 当前消息时间戳。
        `count` - 需要获取的消息数量。
        `direction` - 要获取的消息相对于当前消息的方向 io.rong.imlib.RongCommonDefine.
        `callback` - 获取历史消息的回调，按照时间顺序从新到旧排列。

    - #### getRemoteHistoryMessages

           abstract void getRemoteHistoryMessages(ConversationType conversationType, String targetId, long dateTime, int count, RongIMClient.ResultCallback<List<Message>> callback)

      从服务器端获取指定时间之前的历史消息。

      区别于 getHistoryMessages，该接口是从融云服务器中拉取。从服务端拉取消息后，客户端会做排重，返回排重后的数据。通常用于更换新设备后，拉取历史消息。 使用的时候，建议优先通过 getHistoryMessages 从本地数据库拉取历史消息， 当本地数据库没有历史消息后，再通过此接口获取服务器历史消息，时间戳传入本地数据库里最早的消息时间戳。注意： 1. 此功能需要在融云开发者后台开启历史消息云存储功能。 2. 当本地数据库中已存在将要获取的消息时，此接口不会再返回数据。

      Parameters:
        `conversationType` - 会话类型。
        `targetId` - 目标会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id。
        `dateTime` - 从该时间点开始获取消息。即：消息中的 sentTime getSentTime；如果本地库中没有消息，第一次可传 0，否则传入最早消息的sentTime，获取最新 count 条。
        `count` - 需要获取的消息数量， `0 < count <= 20`。
        `callback` - 获取历史消息的回调，按照时间顺序从新到旧排列。

    - #### getRemoteHistoryMessages

           abstract void getRemoteHistoryMessages(ConversationType conversationType, String targetId, RemoteHistoryMsgOption remoteHistoryMsgOption, RongIMClient.ResultCallback<List<Message>> callback)

      获取指定会话远端历史消息。

      此功能需要在融云开发者后台开启历史消息云存储功能。注意：不支持聊天室！

      Parameters:
        `conversationType` - 会话类型，不支持聊天室。
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id。
        `remoteHistoryMsgOption` - 可配置的参数 RemoteHistoryMsgOption
        `callback` - 获取历史消息的回调，按照时间顺序从新到旧排列。

    - #### cleanRemoteHistoryMessages

           abstract void cleanRemoteHistoryMessages(ConversationType conversationType, String targetId, long recordTime, RongIMClient.OperationCallback callback)

      清除服务器上存储的历史消息。

      根据会话类型和目标会话 id 清除某一会话指定时间戳之前的服务端历史消息, 清除成功后只能从服务端获取到该时间戳之后的历史消息。注意：必须先开通历史消息云存储功能！

      Parameters:
        `conversationType` - 会话类型。
        `targetId` - 会话 id。
        `recordTime` - 清除消息截止时间戳，`0 <= recordTime <= 当前会话最后一条消息的 sentTime，0 清除所有消息，其他值清除小于等于 recordTime 的消息`。
        `callback` - 清除消息的回调。

    - #### cleanHistoryMessages

           abstract void cleanHistoryMessages(ConversationType conversationType, String targetId, long recordTime, boolean cleanRemote, RongIMClient.OperationCallback callback)

      删除指定时间戳之前的消息，可选择是否同时删除服务器端消息

      此方法可从服务器端清除历史消息，但是必须先开通历史消息云存储功能。 根据会话类型和会话 id 清除某一会话指定时间戳之前的本地数据库消息（服务端历史消息）， 清除成功后只能从本地数据库（服务端）获取到该时间戳之后的历史消息。

      Parameters:
        `conversationType` - 会话类型。
        `targetId` - 会话 id。
        `recordTime` - 清除消息截止时间戳，`0 <= recordTime <= 当前会话最后一条消息的 sentTime,0 清除所有消息，其他值清除小于等于 recordTime 的消息`。
        `cleanRemote` - 是否删除服务器端消息
        `callback` - 清除消息的回调。

    - #### getHistoryMessages

           abstract void getHistoryMessages(ConversationType conversationType, String targetId, int oldestMessageId, int count, RongIMClient.ResultCallback<List<Message>> callback)

      获取会话中，从指定消息之前、指定数量的、指定消息类型的最新消息实体。

      Parameters:
        `conversationType` - 会话类型，参考 Conversation.
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id。
        `oldestMessageId` - 最后一条消息的 id。获取此消息之前的 count 条消息，没有消息第一次调用应设置为 -1。
        `count` - 要获取的消息数量。
        `callback` - 获取历史消息的回调，按照时间顺序从新到旧排列。

    - #### deleteMessages

           abstract void deleteMessages(Array<int> messageIds, RongIMClient.ResultCallback<Boolean> callback)

      删除消息。

      Parameters:
        `messageIds` - 要删除的消息 id 数组。
        `callback` - 删除是否成功的回调。

    - #### deleteMessages

           abstract void deleteMessages(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Boolean> callback)

      删除某个会话中的所有消息。

      此接口删除指定会话中数据库的所有消息，同时会清理数据库空间，减少占用空间。

      Parameters:
        `conversationType` - 会话类型，不支持聊天室。参考 Conversation.
        `targetId` - 会话 id。根据不同的 conversationType，可能是 userId, groupId, discussionId。
        `callback` - 删除是否成功的回调。

    - #### deleteRemoteMessages

           abstract void deleteRemoteMessages(ConversationType conversationType, String targetId, Array<Message> messages, RongIMClient.OperationCallback callback)

      批量删除某个会话中的指定远端消息（同时删除对应的本地消息）。

      一次批量操作仅支持删除属于同一个会话的消息，请确保消息列表中的所有消息来自同一会话，一次最多删除 100 条消息。注意：不支持聊天室！

      5.6.9版本以下不支持超级群会话类型，从 5.6.9 版本开始支持超级群会话类型

      Parameters:
        `conversationType` - 会话类型， 不支持聊天室。参考 Conversation.
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、客服 id。
        `messages` - 要删除的消息数组， 数组大小不能超过 100 条。
        `callback` - 删除是否成功的回调。

    - #### clearMessages

           abstract void clearMessages(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Boolean> callback)

      删除某个会话中的所有消息。

      注意：不支持聊天室！

      Parameters:
        `conversationType` - 会话类型，不支持聊天室。参考 Conversation.
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id。
        `callback` - 清空是否成功的回调。

    - #### clearMessagesUnreadStatus

           abstract void clearMessagesUnreadStatus(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Boolean> callback)

      清除某个会话中的未读消息数。

      注意：不支持聊天室！

      Parameters:
        `conversationType` - 会话类型，不支持聊天室。参考 Conversation.
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id。
        `callback` - 清除是否成功的回调。

    - #### setMessageExtra

           abstract void setMessageExtra(int messageId, String value, RongIMClient.ResultCallback<Boolean> callback)

      设置本地消息的附加信息。

      用于扩展消息的使用场景。设置后可以通过 getHistoryMessages 取出带附加信息的消息。注意：只能用于本地使用，无法同步给远程用户。

      Parameters:
        `messageId` - 消息 id。
        `value` - 附加信息，最大 1024 字节。
        `callback` - 是否设置成功的回调。

    - #### setMessageReceivedStatus

           abstract void setMessageReceivedStatus(int messageId, ReceivedStatus receivedStatus, RongIMClient.ResultCallback<Boolean> callback)

      设置消息接收状态。

      Parameters:
        `messageId` - 消息 id。
        `receivedStatus` - 接收到的消息状态。参考 Message.
        `callback` - 是否设置成功的回调。

    - #### setMessageSentStatus

           abstract void setMessageSentStatus(Message message, RongIMClient.ResultCallback<Boolean> callback)

      设置消息发送状态。

      Parameters:
        `message` - 消息实体。参考 Message 。
        `callback` - 是否设置成功的回调。 注意：message 对象需要设置有效的 messageId 和 sentStatus

    - #### getTextMessageDraft

           abstract void getTextMessageDraft(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<String> callback)

      获取会话中的草稿信息。

      Parameters:
        `conversationType` - 会话类型。
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。
        `callback` - 获取草稿文字内容的回调。

    - #### saveTextMessageDraft

           abstract void saveTextMessageDraft(ConversationType conversationType, String targetId, String content, RongIMClient.ResultCallback<Boolean> callback)

      保存会话草稿信息。

      Parameters:
        `conversationType` - 会话类型。参考 io.rong.imlib.model.Conversation.
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。
        `content` - 草稿的文字内容。
        `callback` - 是否保存成功的回调。

    - #### clearTextMessageDraft

           abstract void clearTextMessageDraft(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Boolean> callback)

      删除指定会话中的草稿信息。

      Parameters:
        `conversationType` - 会话类型。
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。
        `callback` - 是否清除成功的回调。

    - #### getMessage

           abstract void getMessage(int messageId, RongIMClient.ResultCallback<Message> callback)

      根据消息 id 获取消息体（数据库索引唯一值）。

      Parameters:
        `messageId` - 消息 id。
        `callback` - 回调。

    - #### insertOutgoingMessage

           abstract void insertOutgoingMessage(ConversationType type, String targetId, SentStatus sentStatus, MessageContent content, RongIMClient.ResultCallback<Message> resultCallback)

      向本地会话中插入一条消息。

      这条消息只是插入本地会话，不会实际发送给服务器和对方。 插入消息需为入库消息，即ISPERSISTED，否者会回调 PARAMETER_ERROR

      Parameters:
        `type` - 会话类型。
        `targetId` - 会话 id。比如私人会话时，是对方的 id； 群组会话时，是群 id； 讨论组会话时，则为该讨论组的 id。
        `sentStatus` - 发送状态 Message.
        `content` - 消息内容。如TextMessageImageMessage 等。
        `resultCallback` - 获得消息发送实体的回调。

    - #### insertOutgoingMessage

           abstract void insertOutgoingMessage(ConversationType type, String targetId, SentStatus sentStatus, MessageContent content, long sentTime, RongIMClient.ResultCallback<Message> resultCallback)

      向本地会话中插入一条消息，方向为发送。

      这条消息只是插入本地会话，不会实际发送给服务器和对方。 插入消息需为入库消息，即 ISPERSISTED，否者会回调 PARAMETER_ERROR

      Parameters:
        `type` - 会话类型。
        `targetId` - 会话 id。比如私人会话时，是对方的 id； 群组会话时，是群 id； 讨论组会话时，则为该讨论组的 id。
        `sentStatus` - 发送状态 Message.
        `content` - 消息内容。如TextMessageImageMessage 等。
        `sentTime` - 消息的发送时间 getSentTime 。
        `resultCallback` - 获得消息发送实体的回调。

    - #### insertIncomingMessage

           abstract void insertIncomingMessage(ConversationType type, String targetId, String senderUserId, ReceivedStatus receivedStatus, MessageContent content, RongIMClient.ResultCallback<Message> resultCallback)

      向本地会话中插入一条消息，方向为接收。

      这条消息只是插入本地会话，不会实际发送给服务器和对方。插入消息需为入库消息，即 ISPERSISTED，否者会回调 PARAMETER_ERROR。

      Parameters:
        `type` - 会话类型。
        `targetId` - 会话 id。比如私人会话时，是对方的 id； 群组会话时，是群 id； 讨论组会话时，则为该讨论,组的 id。
        `senderUserId` - 发送方 id。
        `receivedStatus` - 接收状态 Message.
        `content` - 消息内容。如TextMessageImageMessage等。
        `resultCallback` - 获得消息发送实体的回调。

    - #### insertIncomingMessage

           abstract void insertIncomingMessage(ConversationType type, String targetId, String senderUserId, ReceivedStatus receivedStatus, MessageContent content, long sentTime, RongIMClient.ResultCallback<Message> resultCallback)

      向本地会话中插入一条消息，方向为接收。

      这条消息只是插入本地会话，不会实际发送给服务器和对方。插入消息需为入库消息，即 ISPERSISTED，否者会回调 PARAMETER_ERROR。

      Parameters:
        `type` - 会话类型。
        `targetId` - 会话 id。比如私人会话时，是对方的 id； 群组会话时，是群 id； 讨论组会话时，则为该讨论组的 id。
        `senderUserId` - 发送方 id
        `receivedStatus` - 接收状态 Message.
        `content` - 消息内容。如 TextMessageImageMessage等。
        `sentTime` - 消息的发送时间 getSentTime 。
        `resultCallback` - 获得消息发送实体的回调。

    - #### sendLocationMessage

           abstract void sendLocationMessage(Message message, String pushContent, String pushData, IRongCallback.ISendMessageCallback sendMessageCallback)

      发送地理位置消息。

      发送前构造 Message 消息实体，消息实体中的 content 必须为 LocationMessage, 否则返回失败。 其中的缩略图地址 scheme 只支持 file:// 和 http://。也可不设置缩略图地址，传入 NULL。

      Parameters:
        `message` - 消息实体。
        `pushContent` - 当下发远程推送消息时，在通知栏里会显示这个字段。 如果发送的是自定义消息，该字段必须填写，否则无法收到远程推送消息。 如果发送 sdk 中默认的消息类型，例如 RC:TxtMsg, RC:VcMsg, RC:ImgMsg，则不需要填写，默认已经指定。
        `pushData` - 远程推送附加信息。如果设置该字段，用户在收到远程推送消息时，能通过 getPushData 方法获取。
        `sendMessageCallback` - 发送消息的回调，参考 。

    - #### sendMessage

           abstract void sendMessage(ConversationType type, String targetId, MessageContent content, String pushContent, String pushData, IRongCallback.ISendMessageCallback callback)

      根据会话类型，发送消息。

      通过 io.rong.imlib.IRongCallback.ISendMessageCallback 中的方法回调发送的消息状态及消息体。注意：1 秒钟发送消息不能超过 5 条。

      Parameters:
        `type` - 会话类型。
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。
        `content` - 消息内容，例如 TextMessage, ImageMessage。
        `pushContent` - 当下发远程推送消息时，在通知栏里会显示这个字段。 如果发送的是自定义消息，该字段必须填写，否则无法收到远程推送消息。 如果发送 SDK 中默认的消息类型，例如 RC:TxtMsg, RC:VcMsg, RC:ImgMsg，则不需要填写，默认已经指定。
        `pushData` - 远程推送附加信息。如果设置该字段，用户在收到 push 消息时，能通过 getPushData 方法获取。
        `callback` - 发送消息的回调。参考 io.rong.imlib.IRongCallback.

    - #### sendMessage

           abstract void sendMessage(Message message, String pushContent, String pushData, IRongCallback.ISendMessageCallback callback)

      发送消息。

      通过 io.rong.imlib.IRongCallback.ISendMessageCallback 中的方法回调发送的消息状态及消息体。注意：1 秒钟发送消息不能超过 5 条。

      Parameters:
        `message` - 将要发送的消息体。
        `pushContent` - 当下发远程推送消息时，在通知栏里会显示这个字段。 如果发送的是自定义消息，该字段必须填写，否则无法收到远程推送消息。 如果发送 sdk 中默认的消息类型，例如 RC:TxtMsg, RC:VcMsg, RC:ImgMsg，则不需要填写，默认已经指定。
        `pushData` - 远程推送附加信息。如果设置该字段，用户在收到远程推送消息时，能通过 getPushData 方法获取。
        `callback` - 发送消息的回调，参考 io.rong.imlib.IRongCallback.

    - #### sendMessage

           abstract void sendMessage(Message message, String pushContent, String pushData, SendMessageOption option, IRongCallback.ISendMessageCallback callback)

      发送消息。

      通过 io.rong.imlib.IRongCallback.ISendMessageCallback 中的方法回调发送的消息状态及消息体。注意：1 秒钟发送消息不能超过 5 条 。

      Parameters:
        `message` - 要发送的消息体。
        `pushContent` - 当下发远程推送消息时，在通知栏里会显示这个字段。 如果发送的是自定义消息，该字段必须填写，否则无法收到远程推送消息。 如果发送 sdk 中默认的消息类型，例如 RC:TxtMsg, RC:VcMsg, RC:ImgMsg，则不需要填写，默认已经指定。
        `pushData` - 远程推送附加信息。如果设置该字段，用户在收到远程推送消息时，能通过 getPushData 方法获取。
        `option` - 发送消息附加选项，目前仅支持设置 isVoIPPush，如果对端设备是 iOS，设置 isVoIPPush 为 True，会走 VoIP 通道推送 Push。
        `callback` - 发送消息的回调，参考 io.rong.imlib.IRongCallback.

    - #### sendDirectionalMessage

           abstract void sendDirectionalMessage(ConversationType type, String targetId, MessageContent content, Array<String> userIds, String pushContent, String pushData, IRongCallback.ISendMessageCallback callback)

      发送定向消息。

      此方法用于在群组、超级群中发送消息给其中的部分用户，其它用户不会收到这条消息。 通过 中的方法回调发送的消息状态及消息体。 此方法只能发送非多媒体消息，多媒体消息如ImageMessageFileMessage 或其他继承自 的消息须调用 sendDirectionalMediaMessage 如果您使用 IMLib，可以使用此方法发送定向消息；如果您使用 IMKit，请使用 RongIM 中的同名方法发送定向消息，否则不会自动更新 UI。

      从 5.6.9 版本开始，支持超级群会话类型。

      Parameters:
        `type` - 会话类型。
        `targetId` - 会话 id。可能是群组 Id 、超级群 Id。
        `content` - 消息内容，例如 TextMessage, ImageMessage。
        `userIds` - 讨论组或群组会话中将会接收到此消息的用户列表。
        `pushContent` - 当下发远程推送消息时，在通知栏里会显示这个字段。 如果发送的是自定义消息，该字段必须填写，否则无法收到远程推送消息。 如果发送 SDK 中默认的消息类型，例如 RC:TxtMsg, RC:VcMsg, RC:ImgMsg，则不需要填写，默认已经指定。
        `pushData` - 远程推送附加信息。如果设置该字段，用户在收到远程推送消息时，能通过 getPushData 方法获取。
        `callback` - 发送消息的回调，参考 io.rong.imlib.IRongCallback.

    - #### sendImageMessage

           abstract void sendImageMessage(ConversationType type, String targetId, MessageContent content, String pushContent, String pushData, RongIMClient.SendImageMessageCallback callback)

      发送图片消息。

      如果您使用IMLib，可以使用此方法发送图片消息； 如果您使用 IMKit，请使用 RongIM 中的同名方法发送图片消息，否则不会自动更新 UI。

      Parameters:
        `type` - 会话类型。
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。
        `content` - 消息内容，例如 TextMessage, ImageMessage。
        `pushContent` - 当下发远程推送消息时，在通知栏里会显示这个字段。 如果发送的是自定义消息，该字段必须填写，否则无法收到远程推送消息。 如果发送 SDK 中默认的消息类型，例如 RC:TxtMsg, RC:VcMsg, RC:ImgMsg，则不需要填写，默认已经指定。
        `pushData` - 远程推送附加信息。如果设置该字段，用户在收到远程推送消息时，能通过 getPushData 方法获取。
        `callback` - 发送消息的回调。参考 SendImageMessageCallback。

    - #### sendImageMessage

           abstract void sendImageMessage(Message message, String pushContent, String pushData, RongIMClient.SendImageMessageCallback callback)

      发送图片消息。

      如果您使用IMLib，可以使用此方法发送图片消息；如果您使用 IMKit，请使用 RongIM 中的同名方法发送图片消息，否则不会自动更新 UI。

      Parameters:
        `message` - 发送消息的实体。
        `pushContent` - 当下发远程推送消息时，在通知栏里会显示这个字段。 如果发送的是自定义消息，该字段必须填写，否则无法收到远程推送消息。 如果发送 sdk 中默认的消息类型，例如 RC:TxtMsg, RC:VcMsg, RC:ImgMsg，则不需要填写，默认已经指定。
        `pushData` - 远程推送附加信息。如果设置该字段，用户在收到远程推送消息时，能通过 getPushData 方法获取。
        `callback` - 发送消息的回调。参考 io.rong.imlib.RongIMClient.

    - #### sendImageMessage

           abstract void sendImageMessage(Message message, String pushContent, String pushData, RongIMClient.SendImageMessageWithUploadListenerCallback callback)

      发送图片消息。

      该方法将图片上传到自己的服务器发送，同时更新图片状态。 使用该方法在上传图片时，会回调 io.rong.imlib.RongIMClient.SendImageMessageWithUploadListenerCallback 此回调中会携带 UploadImageStatusListener 对象，使用者只需要调用其中的 update 更新进度 success 更新成功状态，并告知上传成功后的图片地址 error 更新失败状态

      Parameters:
        `message` - 发送消息的实体。
        `pushContent` - 当下发远程推送消息时，在通知栏里会显示这个字段。 如果发送的是自定义消息，该字段必须填写，否则无法收到远程推送消息。 如果发送 SDK 中默认的消息类型，例如 RC:TxtMsg, RC:VcMsg, RC:ImgMsg，则不需要填写，默认已经指定。
        `pushData` - 远程推送附加信息。如果设置该字段，用户在收到远程推送消息时，能通过 getPushData 方法获取。
        `callback` - 发送消息的回调，回调中携带 UploadImageStatusListener 对象，用户调用该对象中的方法更新状态。

    - #### downloadMedia

           abstract void downloadMedia(ConversationType conversationType, String targetId, RongIMClient.MediaType mediaType, String imageUrl, RongIMClient.DownloadMediaCallback callback)

      下载多媒体文件。

      如果本地缓存中包含此文件，则从本地缓存中直接获取，否则将从服务器端下载。

      Parameters:
        `conversationType` - 会话类型。
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。
        `mediaType` - 文件类型。
        `imageUrl` - 文件的 URL 地址。
        `callback` - 下载文件的回调。

    - #### downloadMediaMessage

           abstract void downloadMediaMessage(Message message, IRongCallback.IDownloadMediaMessageCallback callback)

      下载多媒体文件。

      Parameters:
        `message` - 媒体消息（FileMessage，SightMessage，GIFMessage, HQVoiceMessage等）。
        `callback` - 下载文件的回调。参考 IRongCallback.IDownloadMediaMessageCallback。

    - #### downloadMediaFile

           abstract void downloadMediaFile(String fileUniqueId, String fileUrl, String fileName, String path, IRongCallback.IDownloadMediaFileCallback callback)

      下载文件。

      支持断点续传，对应的暂停下载须调用 pauseDownloadMediaFile。

      Parameters:
        `fileUniqueId` - 文件唯一标识, 与 pauseDownloadMediaFile 第一个参数对应
        `fileUrl` - 文件下载地址
        `fileName` - 文件名
        `path` - 文件下载保存目录，如果是 targetVersion 29 为目标，由于访问权限原因，建议使用 context.
        `callback` - 下载文件的回调

    - #### cancelSendMediaMessage

           abstract void cancelSendMediaMessage(Message message, RongIMClient.OperationCallback callback)

      取消发送多媒体文件。

      Parameters:
        `message` - 多媒体文件消息。
        `callback` - 取消发送多媒体文件时的回调。

    - #### cancelDownloadMediaMessage

           abstract void cancelDownloadMediaMessage(Message message, RongIMClient.OperationCallback callback)

      取消多媒体消息下载。

      Parameters:
        `message` - 多媒体文件消息。
        `callback` - 取消下载多媒体文件时的回调。

    - #### pauseDownloadMediaMessage

           abstract void pauseDownloadMediaMessage(Message message, RongIMClient.OperationCallback callback)

      暂停多媒体消息下载。

      Parameters:
        `message` - 多媒体文件消息。
        `callback` - 暂停下载多媒体文件时的回调。

    - #### pauseDownloadMediaFile

           abstract void pauseDownloadMediaFile(String fileUniqueId, RongIMClient.OperationCallback callback)

      暂停多媒体文件下载。

      Parameters:
        `fileUniqueId` - 文件的唯一标识。 须与 downloadMediaFile 第一个参数对应
        `callback` - 暂停下载多媒体文件时的回调。

    - #### getConversationNotificationStatus

           abstract void getConversationNotificationStatus(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<ConversationNotificationStatus> callback)

      获取会话消息提醒状态。

      注意：不支持聊天室！

      Parameters:
        `conversationType` - 会话类型，不支持聊天室（聊天室默认是不接受会话消息提醒的）。
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id。
        `callback` - 获取消息提醒状态的回调。

    - #### setConversationNotificationStatus

           abstract void setConversationNotificationStatus(ConversationType conversationType, String targetId, ConversationNotificationStatus notificationStatus, RongIMClient.ResultCallback<ConversationNotificationStatus> callback)

      设置会话消息提醒状态。

      注意：不支持聊天室！

      Parameters:
        `conversationType` - 会话类型。不支持聊天室类型，因为聊天室默认就是不接受消息提醒的。
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id。
        `notificationStatus` - 会话设置的消息提醒状态 。
        `callback` - 设置状态的回调。

    - #### getCurrentUserId

           abstract String getCurrentUserId()

      获取当前连接用户的信息。

      Returns:

        当前连接用户的信息。

    - #### getDeltaTime

           abstract long getDeltaTime()

      获取本地时间与服务器时间的时间差。

      消息发送成功后，SDK 与服务器同步时间，消息所在数据库中存储的时间就是服务器时间。 System.currentTimeMillis() - getDeltaTime() 可以获取服务器当前时间。

      Returns:

        本地时间与服务器时间的差值。

    - #### clearConversations

           abstract void clearConversations(RongIMClient.ResultCallback callback, Array<ConversationType> conversationTypes)

      清空指定会话类型列表中的所有会话及会话消息。

      Parameters:
        `callback` - 是否清空成功的回调。
        `conversationTypes` - 需要清空的会话类型列表。

    - #### addToBlacklist

           abstract void addToBlacklist(String userId, RongIMClient.OperationCallback callback)

      将某个用户加入黑名单。

      将对方加入黑名单后，对方再发消息时，提示"您的消息已经发出, 但被对方拒收"。但您仍然可以给对方发送消息。

      Parameters:
        `userId` - 用户 id。
        `callback` - 加到黑名单回调。

    - #### getPrivateDownloadToken

          @Deprecated() abstract void )>getPrivateDownloadToken(String fileName, ResultCallback<String> callback)

      此接口仅适用于私有云 SDK 调用，当前版本不再适用，私有云用户使用新接口 getMediaUploadAuthorInfo

      Parameters:
        `fileName` - 文件名称
        `callback` - 返回鉴权 token

    - #### removeFromBlacklist

           abstract void removeFromBlacklist(String userId, RongIMClient.OperationCallback callback)

      将某个用户从黑名单中移出。

      Parameters:
        `userId` - 用户 id。
        `callback` - 移除黑名单回调。

    - #### getBlacklistStatus

           abstract void getBlacklistStatus(String userId, RongIMClient.ResultCallback<RongIMClient.BlacklistStatus> callback)

      获取某用户是否在黑名单中。

      Parameters:
        `userId` - 用户 id。
        `callback` - 获取用户是否在黑名单回调。

    - #### getBlacklist

           abstract void getBlacklist(RongIMClient.GetBlacklistCallback callback)

      获取当前用户设置的黑名单列表。

      Parameters:
        `callback` - 获取黑名单回调。参考 GetBlacklistCallback 。

    - #### setNotificationQuietHours

           abstract void setNotificationQuietHours(String startTime, int spanMinutes, RongIMClient.OperationCallback callback)

      设置消息通知免打扰时间。

      Parameters:
        `startTime` - 起始时间 格式 HH:MM:SS。
        `spanMinutes` - 设置的免打扰结束时间距离起始时间的间隔分钟数。 0 <spanMinutes <1440。 比如，您设置的起始时间是 00：00， 结束时间为 23：59，则 spanMinutes 为 23 * 60 + 59 = 1439 分钟。
        `callback` - 消息通知免打扰时间回调。

    - #### removeNotificationQuietHours

           abstract void removeNotificationQuietHours(RongIMClient.OperationCallback callback)

      移除消息通知免打扰时间。

      Parameters:
        `callback` - 移除消息通知免打扰时间回调。

    - #### clearMessagesUnreadStatus

           abstract void clearMessagesUnreadStatus(ConversationType conversationType, String targetId, long timestamp, RongIMClient.OperationCallback callback)

      清除某个会话中的未读消息数。

      注意：不支持聊天室！

      Parameters:
        `conversationType` - 会话类型，不支持聊天室。
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id。
        `timestamp` - 该会话已阅读的最后一条消息的发送时间戳。参考 getSentTime。
        `callback` - 清除是否成功的回调。

    - #### getSendTimeByMessageId

           abstract long getSendTimeByMessageId(int messageId)

      根据消息 id 获取消息发送时间。

      Parameters:
        `messageId` - 指定的消息 id。
      Returns:

        消息发送成功的时间。

    - #### getNotificationQuietHours

           abstract void getNotificationQuietHours(RongIMClient.GetNotificationQuietHoursCallback callback)

      获取消息通知免打扰时间。

      Parameters:
        `callback` - 消息通知免打扰时间回调。参考 GetNotificationQuietHoursCallback 。

    - #### getMessageByUid

           abstract void getMessageByUid(String uid, RongIMClient.ResultCallback<Message> callback)

      通过全局唯一 id 获取消息实体。

      Parameters:
        `uid` - 全局唯一 id（服务器消息唯一 id）。
        `callback` - 获取消息的回调。

    - #### switchAppKey

           abstract void switchAppKey(String appKey)

      切换 appKey。

      当一个应用对应多个环境， 即多个 appKey 时， 调用此方法实现融云 SDK 热切换。 注意: 调用此方法后, 还需要再次调用 init 和 connect,传入新 appKey 对应的 token，重新初始化和连接。

      Parameters:
        `appKey` - 应用的另一个 appKey。

    - #### getTypingUserListFromConversation

           abstract Collection<TypingStatus> getTypingUserListFromConversation(ConversationType conversationType, String targetId)

      获取会话正在输入的用户列表

      Parameters:
        `conversationType` - 会话类型
        `targetId` - 会话 id
      Returns:

        会话正在输入的用户列表

    - #### sendTypingStatus

           abstract void sendTypingStatus(ConversationType conversationType, String targetId, String typingContentType)

      向会话中发送正在输入的状态，目前只支持单聊。

      Parameters:
        `conversationType` - 会话类型
        `targetId` - 会话 id
        `typingContentType` - 正在输入的消息的类型名， typingContentType 为用户当前正在编辑的消息类型名，即 Message 中 getObjectName 的返回值。 如文本消息，传类型名 "RC:TxtMsg"。

    - #### sendReadReceiptMessage

           abstract void sendReadReceiptMessage(ConversationType conversationType, String targetId, long timestamp)

      发送某个会话中的消息阅读回执

      使用 IMLib 可以注册监听 setReadReceiptListener；使用 IMkit 直接设置 rc_config.xml 中 `rc_read_receipt` 为 true。

      Parameters:
        `conversationType` - 会话类型（只适用 PRIVATE 和 ENCRYPTED 类型）
        `targetId` - 会话 id
        `timestamp` - 该会话中已读的最后一条消息的发送时间戳getSentTime

    - #### sendReadReceiptMessage

           abstract void sendReadReceiptMessage(ConversationType conversationType, String targetId, long timestamp, IRongCallback.ISendMessageCallback callback)

      发送某个会话中的消息阅读回执。

      使用 IMLib 可以注册监听 setReadReceiptListener；使用 IMkit 直接设置 rc_config.xml 中 `rc_read_receipt` 为 true。

      Parameters:
        `conversationType` - 会话类型（只适用 PRIVATE 和 ENCRYPTED 类型）
        `targetId` - 会话 id
        `timestamp` - 会话中已读的最后一条消息的发送时间戳 getSentTime
        `callback` - 发送已读回执消息的回调

    - #### setOnReceiveDestructionMessageListener

           abstract void setOnReceiveDestructionMessageListener(RongIMClient.OnReceiveDestructionMessageListener listener)

      设置阅后即焚消息接收监听器

      Parameters:
        `listener` - 阅后即焚消息接收监听器

    - #### recallMessage

           abstract void recallMessage(Message message, String pushContent, RongIMClient.ResultCallback<RecallNotificationMessage> callback)

      撤回消息

      Parameters:
        `message` - 被撤回的消息
        `pushContent` - 当下发 push 消息时，在通知栏里会显示这个字段，不设置将使用融云默认推送内容
        `callback` - onSuccess 里回调 RecallNotificationMessage，IMLib 已经被撤回的消息需用 替换， 用户需要在界面上对 RecallNotificationMessage 进行展示。

    - #### getUnreadMentionedMessages

           abstract void getUnreadMentionedMessages(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<List<Message>> callback)

      获取会话中未读的 @ 消息。

      Parameters:
        `conversationType` - 会话类型。
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id。
        `callback` - 获取未读 @ 消息的回调。回调里返回的消息列表，按照时间顺序从旧到新。

    - #### sendMediaMessage

           abstract void sendMediaMessage(Message message, String pushContent, String pushData, IRongCallback.ISendMediaMessageCallback callback)

      发送多媒体消息。

      发送前构造 Message 消息实体，消息实体中的 content 必须为多媒体消息。 例如：ImageMessage 、 或其他继承自 MediaMessageContent 的消息。

      Parameters:
        `message` - 发送消息的实体。
        `pushContent` - 当下发远程推送消息时，在通知栏里会显示这个字段。 如果发送的是自定义消息，该字段必须填写，否则无法收到远程推送消息。 如果发送 sdk 中默认的消息类型，例如：RC:TxtMsg, RC:VcMsg, RC:ImgMsg，则不需要填写，默认已经指定。
        `pushData` - 远程推送附加信息。如果设置该字段，用户在收到远程推送消息时，能通过 getPushData 方法获取。
        `callback` - 发送消息的回调 io.rong.imlib.RongIMClient.

    - #### sendMediaMessage

           abstract void sendMediaMessage(Message message, String pushContent, String pushData, SendMessageOption option, IRongCallback.ISendMediaMessageCallback callback)

      发送多媒体消息。

      发送前构造 Message 消息实体，消息实体中的 content 必须为多媒体消息。 例如：ImageMessage 、 或其他继承自 MediaMessageContent 的消息。

      Parameters:
        `message` - 发送消息的实体。
        `pushContent` - 当下发远程推送消息时，在通知栏里会显示这个字段。 如果发送的是自定义消息，该字段必须填写，否则无法收到远程推送消息。 如果发送 sdk 中默认的消息类型，例如：RC:TxtMsg, RC:VcMsg, RC:ImgMsg，则不需要填写，默认已经指定。
        `pushData` - 远程推送附加信息。如果设置该字段，用户在收到远程推送消息时，能通过 getPushData 方法获取。
        `option` - 发送消息附加选项，目前仅支持设置 isVoIPPush，如果对端设备是 iOS，设置 isVoIPPush 为 True，会走 VoIP 通道推送 Push。
        `callback` - 发送消息的回调 io.rong.imlib.RongIMClient.
      Since:

        5.4.4

    - #### sendDirectionalMediaMessage

           abstract void sendDirectionalMediaMessage(Message message, Array<String> userIds, String pushContent, String pushData, IRongCallback.ISendMediaMessageCallback callback)

      发送定向多媒体消息。

      向会话中特定的某些用户发送消息，会话中其他用户不会收到消息。 发送前构造 Message 消息实体，消息实体中的 content 必须为多媒体消息。 例如：ImageMessage 、 或其他继承自 MediaMessageContent 的消息。

      从 5.6.9 版本开始，支持超级群会话类型。

      Parameters:
        `message` - 发送消息的实体。
        `userIds` - 定向接收者 id 数组。
        `pushContent` - 当下发远程推送消息时，在通知栏里会显示这个字段。 如果发送的是自定义消息，该字段必须填写，否则无法收到远程推送消息。 如果发送 SDK 中默认的消息类型，例如: RC:TxtMsg, RC:VcMsg, RC:ImgMsg，则不需要填写，默认已经指定。
        `pushData` - 远程推送附加信息。如果设置该字段，用户在收到远程推送消息时，能通过 getPushData 方法获取。
        `callback` - 发送消息的回调 io.rong.imlib.RongIMClient.

    - #### sendMediaMessage

           abstract void sendMediaMessage(Message message, String pushContent, String pushData, IRongCallback.ISendMediaMessageCallbackWithUploader callback)

      发送多媒体消息，可以使用该方法将多媒体文件上传到自己的服务器。

      上传多媒体文件时，会回调 onAttached 此回调中携带 IRongCallback.MediaMessageUploader 对象，使用者只需要调用此对象中的 update 更新进度 success 更新成功状态，并告知上传成功后的文件地址 error 更新失败状态 cancel ()} 更新取消状态

      Parameters:
        `message` - 发送消息的实体。
        `pushContent` - 当下发远程推送消息时，在通知栏里会显示这个字段。 如果发送的是自定义消息，该字段必须填写，否则无法收到远程推送消息。 如果发送 SDK 中默认的消息类型，例如: RC:TxtMsg, RC:VcMsg, RC:ImgMsg, RC:FileMsg，则不需要填写，默认已经指定。
        `pushData` - 远程推送附加信息。如果设置该字段，用户在收到远程推送消息时，能通过 getPushData 方法获取。
        `callback` - 发送消息的回调，回调中携带 IRongCallback.MediaMessageUploader 对象，用户调用该对象中的方法更新状态。

    - #### sendMediaMessage

           abstract void sendMediaMessage(Message message, String pushContent, String pushData, SendMessageOption option, IRongCallback.ISendMediaMessageCallbackWithUploader callback)

      发送多媒体消息，可以使用该方法将多媒体文件上传到自己的服务器。

      上传多媒体文件时，会回调 onAttached 此回调中携带 IRongCallback.MediaMessageUploader 对象，使用者只需要调用此对象中的 update 更新进度 success 更新成功状态，并告知上传成功后的文件地址 error 更新失败状态 cancel ()} 更新取消状态

      Parameters:
        `message` - 发送消息的实体。
        `pushContent` - 当下发远程推送消息时，在通知栏里会显示这个字段。 如果发送的是自定义消息，该字段必须填写，否则无法收到远程推送消息。 如果发送 SDK 中默认的消息类型，例如: RC:TxtMsg, RC:VcMsg, RC:ImgMsg, RC:FileMsg，则不需要填写，默认已经指定。
        `pushData` - 远程推送附加信息。如果设置该字段，用户在收到远程推送消息时，能通过 getPushData 方法获取。
        `option` - 发送消息附加选项，目前仅支持设置 isVoIPPush，如果对端设备是 iOS，设置 isVoIPPush 为 True，会走 VoIP 通道推送 Push。
        `callback` - 发送消息的回调，回调中携带 IRongCallback.MediaMessageUploader 对象，用户调用该对象中的方法更新状态。
      Since:

        5.4.4

    - #### sendReadReceiptRequest

           abstract void sendReadReceiptRequest(Message message, RongIMClient.OperationCallback callback)

      发起消息已读回执请求（只支持群组和讨论组）。

      注意：只能对自己发送的消息发起消息已读回执请求。

      Parameters:
        `message` - 需要请求已读回执的消息
        `callback` - 回调函数

    - #### sendReadReceiptResponse

           abstract void sendReadReceiptResponse(ConversationType type, String targetId, List<Message> messageList, RongIMClient.OperationCallback callback)

      发送已读回执（只支持群组和讨论组）

      Parameters:
        `type` - 会话类型
        `targetId` - 会话 id
        `messageList` - 会话中需要发送已读回执的消息列表
        `callback` - 回调函数

    - #### syncConversationReadStatus

           abstract void syncConversationReadStatus(ConversationType type, String targetId, long timestamp, RongIMClient.OperationCallback callback)

      同步会话阅读状态。

      Parameters:
        `type` - 会话类型
        `targetId` - 会话 id
        `timestamp` - 会话中已读的最后一条消息的发送时间戳 getSentTime
        `callback` - 回调函数

    - #### setSyncConversationReadStatusListener

           abstract void setSyncConversationReadStatusListener(RongIMClient.SyncConversationReadStatusListener listener)

      设置多端同步会话阅读状态监听。

      Parameters:
        `listener` - 多端同步会话阅读状态监听 SyncConversationReadStatusListener。

    - #### searchConversations

           abstract void searchConversations(String keyword, Array<ConversationType> conversationTypes, Array<String> objectNames, RongIMClient.ResultCallback<List<SearchConversationResult>> resultCallback)

      根据关键字搜索会话。

      此方法可快速返回匹配的会话列表，并且会话中包含已匹配的消息数量。通过 {SearchConversationResult#getMatchCount()} 得到。注意：如果需要自定义消息也能被搜索到，需要在自定义消息中实现 getSearchableWord 方法。

      Parameters:
        `keyword` - 搜索的关键字。
        `conversationTypes` - 搜索的会话类型。
        `objectNames` - 搜索的消息类型,例如:RC:TxtMsg。
        `resultCallback` - 搜索结果回调。

    - #### searchMessages

           abstract void searchMessages(ConversationType conversationType, String targetId, String keyword, int count, long beginTime, RongIMClient.ResultCallback<List<Message>> resultCallback)

      根据关键字搜索指定会话中的消息。

      注意：如果需要自定义消息也能被搜索到，需要在自定义消息中实现 getSearchableWord 方法。

      Parameters:
        `conversationType` - 指定的会话类型。
        `targetId` - 指定的会话 id。
        `keyword` - 搜索的关键字。
        `count` - 返回的搜索结果数量， 传 0 时会返回所有搜索到的消息， 非 0 时，逐页返回。
        `beginTime` - 查询 beginTime 之前的消息， 传 0 时从最新消息开始搜索，从该时间往前搜索。
        `resultCallback` - 搜索结果回调。

    - #### searchMessagesByUser

           abstract void searchMessagesByUser(ConversationType conversationType, String targetId, String userId, int count, long beginTime, RongIMClient.ResultCallback<List<Message>> resultCallback)

      根据用户 id 搜索指定会话中的消息。

      注意：如果需要自定义消息也能被搜索到，需要在自定义消息中实现 getSearchableWord 方法。

      Parameters:
        `conversationType` - 指定的会话类型。
        `targetId` - 指定的会话 id。
        `userId` - 用户 id。
        `count` - 返回的搜索结果数量 `0 < count <= 100` ，如果 `count > 100`，则返回 100。
        `beginTime` - 查询记录的起始时间， 传 0 时从最新消息开始搜索，从该时间往前搜索。
        `resultCallback` - 搜索结果回调。

    - #### getHistoryMessages

           abstract void getHistoryMessages(ConversationType conversationType, String targetId, long sentTime, int before, int after, RongIMClient.ResultCallback<List<Message>> resultCallback)

      在会话中搜索指定消息的前 `before` 数量和 `after` 数量的消息。

      返回的消息列表中会包含指定的消息。消息列表时间顺序从新到旧。

      Parameters:
        `conversationType` - 指定的会话类型。
        `targetId` - 指定的会话 id。
        `sentTime` - 指定消息的发送时间，不能为 0。
        `before` - 指定消息的前部分消息数量。
        `after` - 指定消息的后部分消息数量。
        `resultCallback` - 搜索结果回调。 上拉加载时，返回数据中包含当前消息；例：当前消息 id 为 500， before = 0 after = 10，返回 510 - 500 ，按消息 id 倒序。

    - #### getVendorToken

           abstract void getVendorToken(RongIMClient.ResultCallback<String> resultCallback)

      获取登录者身份认证信息。

      第三方厂商通过使用此接口获取 token，然后与厂商的注册信息一起去融云服务器做认证。

      Parameters:
        `resultCallback` - 请求回调。

    - #### setPushLanguage

           abstract void setPushLanguage(RongIMClient.PushLanguage language, RongIMClient.OperationCallback callback)

      设置远程推送语言，目前支持中文和英文。

      注意：此功能需要从服务端开启用户设置功能。

      Parameters:
        `language` - 远程推送语言类型，PushLanguage。
        `callback` - 执行操作的回调

    - #### setPushLanguageCode

           abstract void setPushLanguageCode(String language, RongIMClient.OperationCallback callback)

      设置推送内容的自然语言。

      Parameters:
        `language` - 通过 SDK 设置的语言环境，语言缩写内容格式为 (ISO-639 Language Code)_(ISO-3166 Country Codes)， 如：zh_CN。目前融云支持的内置推送语言为 zh_CN、en_US、ar_SA
        `callback` - 执行操作的回调

    - #### setPushContentShowStatus

           abstract void setPushContentShowStatus(boolean showStatus, RongIMClient.OperationCallback callback)

      设置是否显示远程推送内容详情。

      注意：此功能需要从服务端开启用户设置功能。

      Parameters:
        `showStatus` - 是否显示 远程推送内容， @code true} 显示 ， `false` 不显示。
        `callback` - 回调

    - #### setPushReceiveStatus

           abstract void setPushReceiveStatus(boolean receiveStatus, RongIMClient.OperationCallback callback)

      设置是否接收远程推送。

      前提：移动端未在线，Web 、MAC/PC 终端在线，移动端是否接收远程推送。注意：此功能需要从服务端开启用户设置功能。

      Parameters:
        `receiveStatus` - 是否接收远程推送。 `true` 接收， `false` 不接收。
        `callback` - 回调

    - #### getPushLanguage

           abstract void getPushLanguage(RongIMClient.ResultCallback<RongIMClient.PushLanguage> callback)

      获取远程推送语言设置。

      Parameters:
        `callback` - 获取远程推送语言设置回调， PushLanguage。

    - #### getPushContentShowStatus

           abstract void getPushContentShowStatus(RongIMClient.ResultCallback<Boolean> callback)

      获取是否显示远程推送内容详情设置。

      Parameters:
        `callback` - 获取是否显示远程推送内容详情回调，`true` 显示远程推送内容详情， `false` 不显示远程推送内容详情。

    - #### getPushReceiveStatus

           abstract void getPushReceiveStatus(RongIMClient.ResultCallback<Boolean> callback)

      获取是否接收远程推送的设置。

      前提: 移动端不在线，Web 、MAC/PC 终端在线，移动端是否接收远程推送。

      Parameters:
        `callback` - 获取是否接收远程推送的设置回调，`true` 接收远程推送 ， `false` 不接收远程推送。

    - #### getOfflineMessageDuration

           abstract void getOfflineMessageDuration(RongIMClient.ResultCallback<String> callback)

      获取离线消息时间（以天为单位）。

      Parameters:
        `callback` - 获取离线消息存储时间回调

    - #### setOfflineMessageDuration

           abstract void setOfflineMessageDuration(int duration, RongIMClient.ResultCallback<Long> callback)

      设置离线消息在服务端的存储时间（以天为单位）。

      注意：该功能需要客户提工单，在服务端开通此功能后，客户端调用该方法才生效。

      Parameters:
        `duration` - 离线消息补偿时间，范围【1~7 天】。
        `callback` - 回调

    - #### setAppVer

           abstract void setAppVer(String appVer)

      设置集成融云 SDK 的用户应用版本信息。

      注意：需在 init 之后调用。

      Parameters:
        `appVer` - 用户版本信息。

    - #### supportResumeBrokenTransfer

           abstract void supportResumeBrokenTransfer(String url, RongIMClient.ResultCallback<Boolean> callback)

      判断是否支持断点续传。

      Parameters:
        `url` - 文件 Url
        `callback` - 回调

    - #### getTheFirstUnreadMessage

           abstract void getTheFirstUnreadMessage(ConversationType conversationType, String targetId, RongIMClient.ResultCallback<Message> callback)

      获取第一条未读消息。

      Parameters:
        `conversationType` - 会话类型
        `targetId` - 会话 id。根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。
        `callback` - 回调

    - #### isFileDownloading

           abstract boolean isFileDownloading(int messageId)

      判断文件是否正在下载中。

      注意：此方法只适用断点续传下载。

      Parameters:
        `messageId` - 消息 id
      Returns:

        是否正在下载

    - #### isFileDownloading

           abstract boolean isFileDownloading(String uid)

      判断文件是否正在下载中。

      注意：此方法只适用断点续传下载。

      Parameters:
        `uid` - 文件 uid，文件的唯一识别标志
      Returns:

        是否正在下载

    - #### setMessageReadTime

           abstract void setMessageReadTime(long messageId, long timestamp, RongIMClient.OperationCallback callback)

      设置消息已读时间。

      Parameters:
        `messageId` - 消息 id
        `timestamp` - 消息时间戳
        `callback` - 设置消息已读的回调

    - #### getVideoLimitTime

           abstract int getVideoLimitTime()

      获取允许发送视频文件的最大时长。

      Returns:

        返回允许发送视频文件的最大时长，单位为秒，获取失败返回 -1。

    - #### getGIFLimitSize

           abstract int getGIFLimitSize()

      获取允许发送 GIF 图片大小最大值。

      Returns:

        返回允许发送 GIF 图片大小最大值，单位为 KB，获取失败返回 -1。

    - #### setReconnectKickEnable

           abstract void setReconnectKickEnable(boolean enable)

      设置断线重连时是否踢出重连设备。

      用户没有开通多设备登录功能的前提下，同一个账号在一台新设备上登录的时候，会把这个账号在之前登录的设备上踢出。 由于 SDK 有断线重连功能，存在下面情况： 用户在 A 设备登录，A 设备网络不稳定，没有连接成功，SDK 启动重连机制。 用户此时又在 B 设备登录，B 设备连接成功。 A 设备网络稳定之后，用户在 A 设备连接成功，B 设备被踢出。 这个接口就是为这种情况加的。 设置 enable 为 `true` 时，SDK 重连的时候发现此时已有别的设备连接成功，不再强行踢出已有设备，而是踢出重连设备。 此方法需要在 init之前调用。

      Parameters:
        `enable` - 是否踢出重连设备

    - #### appOnStart

           abstract void appOnStart()

      通知 SDK 应用回到前台。

      注意：该方法必须在 init 之后调用。

    - #### setRLogLevel

           abstract void setRLogLevel(int pLevel)

      设置业务日志写文件等级。

      接口及时生效。

      Parameters:
        `pLevel` - 日志等级。需要使用以下值之一: F, E, W, I, D, V。

    - #### setRLogFileMaxSize

           abstract void setRLogFileMaxSize(long pSize)

      设置业务日志文件大小，默认 1M。

      接口及时生效，超过设置大小压缩成 zip 文件存放到本地。

      Parameters:
        `pSize` - 日志文件大小，单位 byte。

    - #### setUploadCallback

           abstract void setUploadCallback(UploadCallback pCallback)

      设置上传 RLog 日志到服务器的回调

      Parameters:
        `pCallback` - 日志上传回调，错误码请参考 RLogReporter.

    - #### uploadRLog

           abstract void uploadRLog()

      上传 RLog 日志

      在 connect 成功后调用

    - #### beginDestructMessage

           abstract void beginDestructMessage(Message message, RongIMClient.DestructCountDownTimerListener pListener)

      开始焚烧消息，仅支持单聊。

      Parameters:
        `message` - 焚烧的消息
        `pListener` - 倒计时回调接口

    - #### stopDestructMessage

           abstract void stopDestructMessage(Message message)

      取消焚烧消息，仅支持单聊。

      Parameters:
        `message` - 取消焚烧的消息。

    - #### cancelSDKHeartBeat

           abstract void cancelSDKHeartBeat()

      取消 wakelock 心跳，在连接成功之后调用，整个应用程序全局只需要调用一次。

    - #### sendPing

           abstract void sendPing()

      OEM 实现心跳对齐，发送 Ping 接口 1.后台 WakeLock 心跳 2.RongPush 心跳

    - #### setConversationStatusListener

           abstract void setConversationStatusListener(RongIMClient.ConversationStatusListener listener)

      设置会话状态（置顶和免打扰）多端同步监听

      Parameters:
        `listener` - 会话状态（置顶和免打扰）多端同步监听 ConversationStatusListener

    - #### setMessageExpansionListener

           abstract void setMessageExpansionListener(RongIMClient.MessageExpansionListener listener)

      设置消息扩展监听

      Parameters:
        `listener` - 消息扩展监听

    - #### updateMessageExpansion

           abstract void updateMessageExpansion(Map<String, String> expansion, String messageUId, RongIMClient.OperationCallback callback)

      更新消息扩展信息

      每条消息携带扩展信息键值对最大值 300个，单次设置扩展信息键值对最大值 20个

      Parameters:
        `expansion` - 要更新的消息扩展信息键值对，类型是 HashMap；Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式，不支持汉字。Value 可以输入空格。
        `messageUId` - 消息 messageUId
        `callback` - 更新扩展信息回调

    - #### removeMessageExpansion

           abstract void removeMessageExpansion(List<String> keyArray, String messageUId, RongIMClient.OperationCallback callback)

      删除消息扩展信息中特定的键值对

      Parameters:
        `keyArray` - 消息扩展信息中待删除的 key 的列表，类型是 ArrayList
        `messageUId` - 消息 messageUId
        `callback` - 删除消息扩展信息回调

    - #### getChatroomHistoryMessages

           abstract void getChatroomHistoryMessages(String targetId, long recordTime, int count, RongIMClient.TimestampOrder order, IRongCallback.IChatRoomHistoryMessageCallback callback)

      获取聊天室历史消息。

      从服务器端获取聊天室之前的历史消息，如果指定时间 0，则从存储的第一条消息开始拉取。注意：必须先开通聊天室消息云存储功能。

      Parameters:
        `targetId` - 会话 id。
        `recordTime` - 起始的消息发送时间戳，单位: 毫秒。
        `count` - 需要获取的消息数量，`0 < count <= 200` 。
        `order` - 拉取顺序: 降序, 按照时间戳从大到小; 升序, 按照时间戳从小到大。
        `callback` - 聊天室历史消息回调

    - #### getChatRoomInfo

           abstract void getChatRoomInfo(String chatRoomId, int defMemberCount, ChatRoomMemberOrder order, RongIMClient.ResultCallback<ChatRoomInfo> callback)

      获取聊天室的信息（包含部分成员信息和当前聊天室中的成员总数）。

      注意： 因为聊天室一般成员数量巨大，权衡效率和用户体验，目前返回的聊天室信息仅包含不多于 20 人的成员信息和当前成员总数。 如果您使用 RC_ChatRoom_Member_Asc 升序方式查询，将返回最早加入的成员信息列表； 如果您使用 RC_ChatRoom_Member_Desc 降序方式查询，将返回最晚加入的成员信息列表。 上述两种方式查询，返回的成员列表都是按加入时间从旧到新。 `

      Parameters:
        `chatRoomId` - 聊天室 id。
        `defMemberCount` - 需要获取的成员信息的数量（目前获取到的聊天室信息中仅包含不多于 20人 的成员信息，即 `0 <= count <= 20`，传入 0 获取到的聊天室信息将或仅包含成员总数，不包含具体的成员列表）。
        `order` - 按照何种顺序返回聊天室成员信息。升序返回最早加入的用户列表； 降序返回最晚加入的用户列表。
        `callback` - 状态回调。参考 ChatRoomInfo 。

    - #### joinChatRoom

           abstract void joinChatRoom(String chatRoomId, int defMessageCount, RongIMClient.OperationCallback callback)

      加入聊天室。

      如果聊天室不存在，SDK 会创建聊天室并加入，如果已存在，则直接加入。 可以通过传入的 defMessageCount 设置加入聊天室成功之后需要获取的历史消息数量。 -1 表示不获取任何历史消息，0 表示不特殊设置而使用 sdk 默认的设置（默认为获取 10 条），defMessageCount `0 < defMessageCount <= 50` 为获取的消息数量，最大值为 50。

      Parameters:
        `chatRoomId` - 聊天室 id。
        `defMessageCount` - 进入聊天室拉取消息数量，-1 时不拉取任何消息，0 时拉取 10 条消息，最多只能拉取 50 条。 （加入聊天室时会传本地最后一条消息的时间戳，拉取的是这个时间戳之后的消息。比如：这个时间戳之后有 3 条消息，defMessageCount传 10，也只能拉取 3 条消息。）
        `callback` - 状态回调。

    - #### joinExistChatRoom

           abstract void joinExistChatRoom(String chatRoomId, int defMessageCount, RongIMClient.OperationCallback callback)

      加入已存在的聊天室。

      如果聊天室不存在，则加入失败。加入聊天室时，可以设置拉取聊天室消息数目。

      Parameters:
        `chatRoomId` - 聊天室 id。
        `defMessageCount` - 进入聊天室拉取消息数目，-1 时不拉取任何消息，0 时拉取 10 条消息，最多只能拉取 50 条。
        `callback` - 状态回调。
      Since:

        5.3.1：加入聊天室后，断网重新加入聊天室默认获取聊天室消息条数，为主动加入时获取的历史消息条数。由于每次传入的条数固定, 可能会导致消息重复，App 需要做消息排重。

    - #### bindChatRoomWithRTCRoom

           abstract void bindChatRoomWithRTCRoom(String chatRoomId, String RTCRoomId, RongIMClient.OperationCallback callback)

      绑定chatRoom和RTCRoom，当在RTCRoom开启时如需调用ChatRoom调用此方法。

    - #### quitChatRoom

           abstract void quitChatRoom(String chatRoomId, RongIMClient.OperationCallback callback)

      退出聊天室。

      Parameters:
        `chatRoomId` - 聊天室 id。
        `callback` - 状态回调。

    - #### setChatRoomEntry

           abstract void setChatRoomEntry(String chatRoomId, String key, String value, boolean sendNotification, boolean autoDelete, String notificationExtra, RongIMClient.OperationCallback callback)

      设置聊天室自定义属性。

      key 不存在，增加属性； key 已存在，只能更新当前用户设置的属性值。注意：必须先开通聊天室状态存储功能。

      Parameters:
        `chatRoomId` - 聊天室 id
        `key` - 聊天室属性名称，Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式，最大长度 128 个字符。
        `value` - 聊天室属性对应的值，最大长度 4096 个字符。
        `sendNotification` - 是否需要发送通知，如果需要发送通知，SDK 接收通知消息。
        `autoDelete` - 退出后是否删除
        `notificationExtra` - 通知的自定义字段，通知消息 中会包含此字段，最大长度 2 kb。
        `callback` - 设置聊天室属性的回调

    - #### forceSetChatRoomEntry

           abstract void forceSetChatRoomEntry(String chatRoomId, String key, String value, boolean sendNotification, boolean autoDelete, String notificationExtra, RongIMClient.OperationCallback callback)

      强制设置聊天室自定义属性。

      key 不存在，增加属性； key 已存在，更新属性的值。注意：必须先开通聊天室状态存储功能。

      Parameters:
        `chatRoomId` - 聊天室 id
        `key` - 聊天室属性名称， Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式，最大长度 128 个字符。
        `value` - 聊天室属性对应的值，最大长度 4096 个字符。
        `sendNotification` - 是否需要发送通知，如果需要发送通知，SDK 接收通知消息 。
        `autoDelete` - 退出后是否删除
        `notificationExtra` - 通知自定义字段，通知消息 中会包含此字段，最大长度 2 kb。
        `callback` - 设置聊天室属性的回调

    - #### getChatRoomEntry

           abstract void getChatRoomEntry(String chatRoomId, String key, RongIMClient.ResultCallback<Map<String, String>> callback)

      获取聊天室单个属性。

      注意：必须先开通聊天室状态存储功能。

      Parameters:
        `chatRoomId` - 聊天室 id
        `key` - 聊天室属性键值
        `callback` - 结果回调监听

    - #### getAllChatRoomEntries

           abstract void getAllChatRoomEntries(String chatRoomId, RongIMClient.ResultCallback<Map<String, String>> callback)

      获取聊天室所有属性。

      注意：必须先开通聊天室状态存储功能。

      Parameters:
        `chatRoomId` - 聊天室 id
        `callback` - 结果回调监听

    - #### removeChatRoomEntry

           abstract void removeChatRoomEntry(String chatRoomId, String key, Boolean sendNotification, String notificationExtra, RongIMClient.OperationCallback callback)

      删除聊天室自定义属性。

      注意： 1. 必须先开通聊天室状态存储功能 2. 只有自己设置的属性可以删除

      Parameters:
        `chatRoomId` - 聊天室 id
        `key` - 聊天室属性键值
        `sendNotification` - 是否需要发送通知，如果需要发送通知，SDK 会收到通知消息 。
        `notificationExtra` - 通知自定义字段，通知消息 中包含此字段，最大长度 2 kb。
        `callback` - 结果回调监听

    - #### forceRemoveChatRoomEntry

           abstract void forceRemoveChatRoomEntry(String chatRoomId, String key, Boolean sendNotification, String notificationExtra, RongIMClient.OperationCallback callback)

      强制删除聊天室自定义属性。

      注意：必须先开通聊天室状态存储功能。

      Parameters:
        `chatRoomId` - 聊天室 id
        `key` - 聊天室属性键值
        `sendNotification` - 是否需要发送通知，如果需要发送通知，SDK 会收到通知消息 。
        `notificationExtra` - 通知自定义字段，通知消息 中包含此字段，最大长度 2 kb。
        `callback` - 结果回调监听

    - #### setKVStatusListener

           abstract void setKVStatusListener(RongIMClient.KVStatusListener listener)

      设置聊天室 KV 状态变化的监听

      Parameters:
        `listener` - 聊天室 KV 状态变化的监听 KVStatusListener

    - #### searchPublicService

           abstract void searchPublicService(RongIMClient.SearchType searchType, String keywords, RongIMClient.ResultCallback<PublicServiceProfileList> callback)

      搜索公众服务。

      Parameters:
        `searchType` - 搜索类型枚举。参考 SearchType 。
        `keywords` - 搜索关键字。
        `callback` - 搜索结果回调。

    - #### searchPublicServiceByType

           abstract void searchPublicServiceByType(PublicServiceType publicServiceType, RongIMClient.SearchType searchType, String keywords, RongIMClient.ResultCallback<PublicServiceProfileList> callback)

      按公众服务类型搜索公众服务。

      Parameters:
        `publicServiceType` - 公众服务类型。 参考 。
        `searchType` - 搜索类型枚举。参考 SearchType 。
        `keywords` - 搜索关键字。
        `callback` - 搜索结果回调。

    - #### subscribePublicService

           abstract void subscribePublicService(PublicServiceType publicServiceType, String publicServiceId, RongIMClient.OperationCallback callback)

      订阅公众号。

      Parameters:
        `publicServiceType` - 公众服务类型。参考 io.rong.imlib.model.Conversation.
        `publicServiceId` - 公共服务 id。
        `callback` - 订阅公众号回调。

    - #### unsubscribePublicService

           abstract void unsubscribePublicService(PublicServiceType publicServiceType, String publicServiceId, RongIMClient.OperationCallback callback)

      取消订阅公众号。

      Parameters:
        `publicServiceType` - 公众服务类型。参考 io.rong.imlib.model.Conversation.
        `publicServiceId` - 公共服务 id。
        `callback` - 取消订阅公众号回调。

    - #### getPublicServiceProfile

           abstract void getPublicServiceProfile(PublicServiceType publicServiceType, String publicServiceId, RongIMClient.ResultCallback<PublicServiceProfile> callback)

      获取某公共服务信息。

      Parameters:
        `publicServiceType` - 公众服务类型。参考 io.rong.imlib.model.Conversation.
        `publicServiceId` - 公共服务 id。
        `callback` - 公共账号信息回调。

    - #### getPublicServiceList

           abstract void getPublicServiceList(RongIMClient.ResultCallback<PublicServiceProfileList> callback)

      获取己关注公共账号列表。

      Parameters:
        `callback` - 获取己关注公共账号列表回调。

    - #### getDiscussion

           abstract void getDiscussion(String discussionId, RongIMClient.ResultCallback<Discussion> callback)

      获取讨论组的信息。

      Parameters:
        `discussionId` - 需要获取信息的讨论组 id。
        `callback` - 获取讨论组的回调。

    - #### setDiscussionName

           abstract void setDiscussionName(String discussionId, String name, RongIMClient.OperationCallback callback)

      设置讨论组名称。

      Parameters:
        `discussionId` - 需要设置的讨论组 id。
        `name` - 要设置的讨论组名称。
        `callback` - 设置讨论组的回调。

    - #### createDiscussion

           abstract void createDiscussion(String name, List<String> userIdList, RongIMClient.CreateDiscussionCallback callback)

      创建讨论组。

      Parameters:
        `name` - 讨论组名称。
        `userIdList` - 讨论组成员 id 列表。
        `callback` - 创建讨论组成功后的回调。

    - #### addMemberToDiscussion

           abstract void addMemberToDiscussion(String discussionId, List<String> userIdList, RongIMClient.OperationCallback callback)

      将用户加入讨论组。

      Parameters:
        `discussionId` - 讨论组 id。
        `userIdList` - 邀请的用户 id 列表。
        `callback` - 执行操作的回调。

    - #### removeMemberFromDiscussion

           abstract void removeMemberFromDiscussion(String discussionId, String userId, RongIMClient.OperationCallback callback)

      讨论组踢人，将用户移出讨论组。

      如果当前登陆用户不是此讨论组的创建者并且此讨论组没有开放加人权限，则会返回错误。不能使用此接口将自己移除，否则会返回错误。 如果您需要退出该讨论组，可以使用 quitDiscussion 方法。

      Parameters:
        `discussionId` - 讨论组 id。
        `userId` - 用户 id。
        `callback` - 执行操作的回调 io.rong.imlib.RongIMClient.

    - #### quitDiscussion

           abstract void quitDiscussion(String discussionId, RongIMClient.OperationCallback callback)

      退出当前讨论组。

      Parameters:
        `discussionId` - 讨论组 id。
        `callback` - 执行操作的回调。

    - #### setDiscussionInviteStatus

           abstract void setDiscussionInviteStatus(String discussionId, RongIMClient.DiscussionInviteStatus status, RongIMClient.OperationCallback callback)

      设置讨论组成员邀请权限。

      Parameters:
        `discussionId` - 讨论组 id。
        `status` - 讨论组邀请状态，默认为开放。参考 DiscussionInviteStatus 。
        `callback` - 设置权限的回调。

    - #### getRealTimeLocation

           abstract RealTimeLocationErrorCode getRealTimeLocation(ConversationType conversationType, String targetId)

      获取 RealTimeLocation 实例。

      使用时，每次进入会话，获取该会话对应的实例，以此判断位置共享业务是否可用或者正在进行中。 如果获取实例失败，返回 error code，对应具体的失败信息。 如果返回成功，使用者可以设置监听，发起位置共享。 如果返回正在进行中，则是对方已发起位置共享，使用者可以设置监听，加入。 如果返回其他失败信息，使用者可以据此做出相应的提示。

      Parameters:
        `conversationType` - 发起位置共享的所在会话的会话类型。
        `targetId` - 发起位置共享的会话 id。
      Returns:

        是否获取实例成功。 RealTimeLocationErrorCode。

    - #### startRealTimeLocation

           abstract RealTimeLocationErrorCode startRealTimeLocation(ConversationType conversationType, String targetId)

      发起位置共享。

      Parameters:
        `conversationType` - 发起位置共享的会话类型。
        `targetId` - 发起位置共享的会话 id。
      Returns:

        是否开启成功。对应具体的错误码 RealTimeLocationErrorCode。

    - #### joinRealTimeLocation

           abstract RealTimeLocationErrorCode joinRealTimeLocation(ConversationType conversationType, String targetId)

      加入位置共享。

      Parameters:
        `conversationType` - 位置共享的会话类型。
        `targetId` - 位置共享的会话 id。
      Returns:

        是否加入成功。对应具体的错误码 RealTimeLocationErrorCode。

    - #### quitRealTimeLocation

           abstract void quitRealTimeLocation(ConversationType conversationType, String targetId)

      退出位置共享。

      Parameters:
        `conversationType` - 位置共享的会话类型。
        `targetId` - 位置共享的会话 id。

    - #### getRealTimeLocationParticipants

           abstract List<String> getRealTimeLocationParticipants(ConversationType conversationType, String targetId)

      获取位置共享的所有成员。

      Parameters:
        `conversationType` - 位置共享的会话类型。
        `targetId` - 位置共享的会话 id。
      Returns:

        参与成员 id 列表。

    - #### getRealTimeLocationCurrentState

           abstract RealTimeLocationStatus getRealTimeLocationCurrentState(ConversationType conversationType, String targetId)

      获取位置共享状态。

      Parameters:
        `conversationType` - 位置共享的会话类型。
        `targetId` - 位置共享的会话 id。
      Returns:

        正在进行的位置共享状态。

    - #### addRealTimeLocationListener

           abstract void addRealTimeLocationListener(ConversationType conversationType, String targetId, RongIMClient.RealTimeLocationListener listener)

      添加位置共享监听。

      Parameters:
        `conversationType` - 位置共享的会话类型。
        `targetId` - 位置共享的会话 id。
        `listener` - 位置共享监听。

    - #### removeRealTimeLocationObserver

           abstract void removeRealTimeLocationObserver(ConversationType conversationType, String targetId)

      移除位置共享监听。

      Parameters:
        `conversationType` - 位置共享的会话类型。
        `targetId` - 位置共享的会话 id。

    - #### updateRealTimeLocationStatus

           abstract void updateRealTimeLocationStatus(ConversationType conversationType, String targetId, double latitude, double longitude, RealTimeLocationType realTimeLocationType)

      更新位置共享信息。

      Parameters:
        `conversationType` - 位置共享的会话类型。
        `targetId` - 位置共享的会话 id。
        `latitude` - 纬度
        `longitude` - 经度
        `realTimeLocationType` - 实时共享位置类型

    - #### startCustomService

           abstract void startCustomService(String kefuId, ICustomServiceListener listener, CSCustomServiceInfo customServiceInfo)

      启动客服服务。

      Parameters:
        `kefuId` - 客服 id，用户去融云开发者后台申请开通后获得客服 id。
        `listener` - 客服监听，监听客服的状态 ICustomServiceListener。
        `customServiceInfo` - 客服用户信息，包括用户基本信息，用户联系信息以及请求信息。 其中 nickName 不能为空， 如果为空，则上传当前用户 userId。

    - #### selectCustomServiceGroup

           abstract void selectCustomServiceGroup(String kefuId, String groupId)

      发送转人工客服消息

      Parameters:
        `kefuId` - 客服 id
        `groupId` - 分组 id

    - #### switchToHumanMode

           abstract void switchToHumanMode(String kefuId)

      切换到人工客服模式。

      切换的结果需要在 onModeChanged 方法回调中处理。 如果客服没有分组， 则直接切人工模式；如果客服有分组，那么需要在回调onSelectGroup 中去弹出分组选择窗口并选择分组，之后在这个回调中调用 selectCustomServiceGroup 根据客服 id 和 分组 id 切换到人工模式。 客服模式 io.rong.imlib.cs.model.CustomServiceMode 分为无服务、机器人模式、人工模式、机器人优先模式和人工优先模式。

      Parameters:
        `kefuId` - 客服 id，用户去融云开发者后台申请开通后获得客服 id。

    - #### evaluateCustomService

           abstract void evaluateCustomService(String kefuId, boolean isRobotResolved, String knowledgeId)

      评价机器人客服，用于人工机器人分开评价。

      当建立客服连接时，返回的 CustomServiceConfig.CSEvaType 为 EVA_SEPARATELY时，调用此方法对人工客服进行评价。

      Parameters:
        `kefuId` - 客服 id，用户去融云开发者后台申请开通后获得客服 id。
        `isRobotResolved` - robot 客服是否解决了问题。`true` 解决 ，`false` 未解决。
        `knowledgeId` - 机器人评价的消息 id，同时满足以下 4 个条件，此参数有效，其余情况可以传空字符串。 当参数有效时, 取出 4 中描述的 “sid” 对应的值就是需要传入的 knowledgeId： 1.

    - #### evaluateCustomService

           abstract void evaluateCustomService(String kefuId, int source, String suggest, String dialogId)

      评价机器人客服，用于人工机器人分开评价。

      当建立客服连接时，返回的 CustomServiceConfig.CSEvaType 为 EVA_SEPARATELY时，调用此方法对人工客服进行评价。

      Parameters:
        `kefuId` - 客服 id,用户去融云开发者后台申请开通后获得客服 id。
        `source` - 星级，范围 1-5，5 为最高,1 为最低。
        `suggest` - 客户的针对人工客服的意见和建议。
        `dialogId` - 会话 id。客服后台主动拉评价的时候这个参数有效，其余情况传空字符串即可。 客服主动拉评价的时候， 会走 的 onPullEvaluation 回调，并带回 dialogId。

    - #### evaluateCustomService

           abstract void evaluateCustomService(String kefuId, int source, CSEvaSolveStatus resolvestatus, String tagText, String suggest, String dialogId, String extra)

      评价机器人客服，用于人工机器人分开评价。

      当建立客服连接时，返回的 CustomServiceConfig.CSEvaType 为 EVA_SEPARATELY时，调用此方法对人工客服进行评价。

      Parameters:
        `kefuId` - 客服 id，用户去融云开发者后台申请开通后获得客服 id。
        `source` - 星级，范围 1-5，5 为最高，1 为最低。
        `resolvestatus` - 解决状态 CustomServiceConfig.
        `tagText` - 5 星以下标签，以","分隔。
        `suggest` - 客户的针对人工客服的意见和建议。
        `dialogId` - 会话 id。客服后台主动拉评价的时候这个参数有效，其余情况传空字符串即可。 客服主动拉评价的时候， 会走 的 onPullEvaluation} 回调，并带回 dialogId。
        `extra` - 预留扩展字段，可以传 null。

    - #### evaluateCustomService

           abstract void evaluateCustomService(String kefuId, int source, CSEvaSolveStatus solveStatus, String suggest, String dialogId)

      评价机器人客服，用于人工机器人统一评价。

      当建立客服连接时，返回的 CustomServiceConfig.CSEvaType 为 EVA_UNIFIED 时，调用此方法进行评价。

      Parameters:
        `kefuId` - 客服 id，用户去融云开发者后台申请开通后获得客服 id。
        `source` - 星级，范围 1-5，5 为最高，1 为最低。
        `solveStatus` - 问题解决状态 CustomServiceConfig.
        `suggest` - 客户的针对人工客服的意见和建议。
        `dialogId` - 会话 id。客服后台主动拉评价的时候这个参数有效，其余情况传空字符串即可。 客服主动拉评价的时候。 会走 的 onPullEvaluation 回调，并带回 dialogId。

    - #### leaveMessageCustomService

           abstract void leaveMessageCustomService(String kefuId, Map<String, String> contentMap, RongIMClient.OperationCallback operationCallback)

      客服留言。

      Parameters:
        `kefuId` - 客服 id，用户去融云开发者后台申请开通后获得客服 id。
        `contentMap` - 留言内容。该 map 的 key 是 getName #}的值, 是在启动客服时通过 leaveMessageNativeInfo 根据客服后台的留言配置返回的信息。
        `operationCallback` - 留言是否成功的回调。

    - #### stopCustomService

           abstract void stopCustomService(String kefuId)

      退出客服服务。

      Parameters:
        `kefuId` - 客服 id，用户在融云开发者后台申请开通后获得客服 id。

    - #### setCustomServiceHumanEvaluateListener

           abstract void setCustomServiceHumanEvaluateListener(OnHumanEvaluateListener listener)

      设置人工评价监听。

      当人工评价有标签等配置时，在回调中返回配置。

      Parameters:
        `listener` - 人工客服评价监听

    - #### batchInsertMessage

           abstract void batchInsertMessage(List<Message> messages, RongIMClient.ResultCallback<Boolean> callback)

      批量插入接收的消息（该消息只插入本地数据库，实际不会发送给服务器和对方） Message 下列属性会被入库，其余属性会被抛弃 conversationType 会话类型 targetId 会话 ID messageDirection 消息方向 senderUserId 发送者 ID receivedStatus 接收状态；消息方向为接收方且未调用 message.getReceivedStatus().setRead()，该条消息未读； sentStatus 发送状态 content 消息的内容 sentTime 消息发送的 Unix 时间戳，单位为毫秒，会影响消息排序

      此方法不支持聊天室的会话类型。每批最多处理 500 条消息，超过 500 条返回 RC_INVALID_PARAMETER_MESSAGE_LIST；消息的未读会累加到回话的未读数上。

      Parameters:
        `messages` - 批量处理的消息列表
        `callback` - 回调

    - #### getDownloadInfo

           abstract void getDownloadInfo(String tag, RongIMClient.ResultCallback<DownloadInfo> callback)

      获取媒体文件下载信息。

      注意：此方法只适用断点续传下载。

      Parameters:
        `tag` - 文件唯一识别标志， 调用 downloadMediaMessage 则是 messageId 字符串 调用downloadMediaFile,则是 fileUniqueId 第一个参数
        `callback` - 回调

    - #### setMessageBlockListener

           abstract void setMessageBlockListener(MessageBlockListener listener)

      设置发送含有敏感词消息被拦截的监听

    - #### setProxy

           abstract boolean setProxy(RCIMProxy proxy)

      Returns:

        设置结果

      Since:

        5.3.0

        设置 IM SDK 代理，如果设置的代理无效，SDK 内部不做自动探测，会使用无效代理，导致连接失败。调用该接口前建议先调用 testProxy 接口测试代理可用性 该方法必须在 init 之前调用。 如果要重新设置代理，需要先调用 disconnect 之后重新设置并连接 设置的代理只保存于内存中，不做持久化处理，需要每次打开 App 都需要重新设置。 @

    - #### getCurrentProxy

           abstract RCIMProxy getCurrentProxy()

      Returns:

        当前设置的代理

      Since:

        5.3.0 获取当前设置的代理

    - #### testProxy

           abstract void testProxy(RCIMProxy proxy, String testHost, RongIMClient.Callback callback)

      Parameters:
        `proxy` - 代理
        `testHost` - 测试地址,建议设置为 AppServer 的域名
        `callback` - 回调
      Since:

        5.3.0 测试代理可用性