Package io.rong.imkit

## Interface MessageInterceptor

- All Implemented Interfaces:

      public interface MessageInterceptor

  消息拦截器

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---

  - ### Field Summary

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

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---

  - ### Enum Constant Summary

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

  - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract boolean` | `interceptReceivedMessage(Message message, int left, boolean hasPackage, boolean offline)` | 接收实时或者离线消息拦回调。 注意: 1.
    `abstract boolean` | `interceptOnSendMessage(Message message)` | 准备发送消息的拦截回调。
    `abstract boolean` | `interceptOnSentMessage(Message message)` | 发送消息成功后的拦截回调。
    `abstract boolean` | `interceptOnInsertOutgoingMessage(ConversationType type, String targetId, SentStatus sentStatus, MessageContent content, long sentTime)` | 准备插入Outgoing消息的拦截回调。
    `abstract boolean` | `interceptOnInsertIncomingMessage(ConversationType type, String targetId, String senderId, ReceivedStatus receivedStatus, MessageContent content, long sentTime)` | 准备插入Incoming消息的拦截回调。
    `boolean` | `)>interceptOnInsertOutgoingMessage(ConversationType type, String targetId, SentStatus sentStatus, MessageContent content, long time, ResultCallback<Message> callback)` | 准备插入发送消息的拦截回调。

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

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

- - ### Constructor Detail

  - ### Method Detail

    - #### interceptReceivedMessage

           abstract boolean interceptReceivedMessage(Message message, int left, boolean hasPackage, boolean offline)

      接收实时或者离线消息拦回调。

      注意: 1. 针对接收离线消息时，服务端会将 200 条消息打成一个包发到客户端，客户端对这包数据进行解析。 2. hasPackage 标识是否还有剩余的消息包，left 标识这包消息解析完逐条抛送给 App 层后，剩余多少条。 如何判断离线消息收完： 1. hasPackage 和 left 都为 0； 2. hasPackage 为 0 标识当前正在接收最后一包（200条）消息，left 为 0 标识最后一包的最后一条消息也已接收完毕。

      Parameters:
        `message` - 接收到的消息对象
        `left` - 每个数据包数据逐条上抛后，还剩余的条数
        `hasPackage` - 是否在服务端还存在未下发的消息包
        `offline` - 消息是否离线消息
      Returns:

        true 用户拦截此次消息，sdk不再做任何分发处理，false,交由sdk处理

    - #### interceptOnSendMessage

           abstract boolean interceptOnSendMessage(Message message)

      准备发送消息的拦截回调。

      Parameters:
        `message` - 准备发送的消息
      Returns:

        true 用户拦截此次消息，sdk不再做后续处理，false,交由sdk处理

    - #### interceptOnSentMessage

           abstract boolean interceptOnSentMessage(Message message)

      发送消息成功后的拦截回调。

      Parameters:
        `message` - 准备发送的消息
      Returns:

        true 用户拦截此次消息，sdk不再做后续处理，false,交由sdk处理

    - #### interceptOnInsertOutgoingMessage

           abstract boolean interceptOnInsertOutgoingMessage(ConversationType type, String targetId, SentStatus sentStatus, MessageContent content, long sentTime)

      准备插入Outgoing消息的拦截回调。

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

        true 用户拦截此次消息，sdk不再做后续处理，false,交由sdk处理

    - #### interceptOnInsertIncomingMessage

           abstract boolean interceptOnInsertIncomingMessage(ConversationType type, String targetId, String senderId, ReceivedStatus receivedStatus, MessageContent content, long sentTime)

      准备插入Incoming消息的拦截回调。

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

        true 用户拦截此次消息，sdk不再做后续处理，false,交由sdk处理

    - #### interceptOnInsertOutgoingMessage

           boolean )>interceptOnInsertOutgoingMessage(ConversationType type, String targetId, SentStatus sentStatus, MessageContent content, long time, ResultCallback<Message> callback)

      准备插入发送消息的拦截回调。

      Parameters:
        `type` - 会话类型。
        `targetId` - 会话 id。比如私人会话时，是对方的 id； 群组会话时，是群 id； 讨论组会话时，则为该讨论组的 id。
        `sentStatus` - 发送状态 Message.
        `content` - 消息内容。如TextMessageImageMessage 等。
        `time` - 消息的发送时间 getSentTime 。
        `callback` - 1，拦截图片消息时，此方法return true，并且此callback返回需返回onError，处理业务侧拦截图片消息逻辑。 2，图片消息设置消息扩展时，此方法return true，构建message将可扩展属性设置为ture，并调用callback.
      Returns:

        true 用户拦截此次消息，sdk不再做后续处理，false,交由sdk处理