Package io.rong.imlib.model

## Class Message

- All Implemented Interfaces:

      public class Message

  消息实体，用来容纳和存储客户端收到的消息信息，对应聊天界面中的消息。

  Author:

    rongcloud

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `public enum` | `Message.MessageDirection` | 消息方向枚举。
    `public enum` | `Message.SentStatus` | 发送出的消息的状态。
    `public class` | `Message.ReceivedStatus` | 接收到的消息的状态。 是一个按位标记的枚举，可以进行位运算。

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `public ConversationType` | `conversationType` |
    `public String` | `targetId` |
    `public String` | `channelId` |
    `public int` | `messageId` |
    `public Message.MessageDirection` | `messageDirection` |
    `public String` | `senderUserId` |
    `public Message.ReceivedStatus` | `receivedStatus` |
    `public Message.SentStatus` | `sentStatus` |
    `public long` | `receivedTime` |
    `public long` | `sentTime` |
    `public long` | `readTime` |
    `public String` | `objectName` |
    `public MessageContent` | `content` |
    `public String` | `extra` |
    `public ReadReceiptInfo` | `readReceiptInfo` |
    `public ReadReceiptInfoV4` | `readReceiptInfoV4` |
    `public MessageConfig` | `messageConfig` |
    `public MessagePushConfig` | `messagePushConfig` |
    `public boolean` | `isOffline` |
    `public Map<String, String>` | `expansion` |
    `public List<String>` | `directedUserIds` |
    `public boolean` | `isEmptyContent` |
    `public final static Creator<Message>` | `CREATOR` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Message()` | 默认构造函数。
    `Message(Parcel in)` |

  - ### Enum Constant Summary

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

  - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `ConversationType` | `getConversationType()` | 获取会话类型。
    `void` | `setConversationType(ConversationType conversationType)` | 设置会话类型。
    `String` | `getTargetId()` | 获取目标 id。 根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。
    `void` | `setTargetId(String targetId)` | 设置目标 id。 根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。
    `String` | `getChannelId()` | 获取频道 id
    `void` | `setChannelId(String channelId)` | 设置频道 id，长度限制 20 字符
    `int` | `getMessageId()` | 获取本地存储的消息的唯一值（数据库索引唯一值）。
    `void` | `setMessageId(int messageId)` | 设置本地存储的消息的唯一值（数据库索引唯一值）。
    `Message.MessageDirection` | `getMessageDirection()` | 获取消息方向。
    `void` | `setMessageDirection(Message.MessageDirection messageDirection)` | 设置消息方向。
    `String` | `getSenderUserId()` | 获取发送消息的用户 id。
    `void` | `setSenderUserId(String senderUserId)` | 设置发送消息的用户 id。
    `Message.ReceivedStatus` | `getReceivedStatus()` | 获取消息的接收状态。
    `void` | `setReceivedStatus(Message.ReceivedStatus receivedStatus)` | 设置消息的接收状态。
    `Message.SentStatus` | `getSentStatus()` | 获取消息的发送状态。
    `void` | `setSentStatus(Message.SentStatus sentStatus)` | 设置消息的发送状态。
    `long` | `getReceivedTime()` | 获取消息接收时间（Unix 时间戳、毫秒）。 接收时间为消息到达接收客户端时客户端的本地时间。
    `void` | `setReceivedTime(long receivedTime)` | 设置消息接收时间（Unix 时间戳、毫秒）。 接收时间为消息到达接收客户端时客户端的本地时间。
    `long` | `getSentTime()` | 获取消息发送时间（Unix 时间戳、毫秒）。 发送时间为消息从发送客户端到达服务器时的服务器时间。
    `void` | `setSentTime(long sentTime)` | 设置消息发送时间（Unix 时间戳、毫秒）。 发送时间为消息从发送客户端到达服务器时的服务器时间。
    `long` | `getReadTime()` |
    `void` | `setReadTime(long readTime)` |
    `String` | `getObjectName()` | 获取消息对象名称。 消息对象名称即 io.rong.imlib.
    `void` | `setObjectName(String objectName)` | 设置消息对象名称。 消息对象名称即 io.rong.imlib.
    `MessageContent` | `getContent()` | 获取消息内容。
    `void` | `setContent(MessageContent content)` | 设置消息内容。
    `String` | `getExtra()` | 获取消息的附加信息。
    `void` | `setExtra(String extra)` | 设置消息的附加信息。
    `ReadReceiptInfo` | `getReadReceiptInfo()` | 获取已读回执状态
    `void` | `setReadReceiptInfo(ReadReceiptInfo readReceiptInfo)` | 设置已读回执状态
    `ReadReceiptInfoV4` | `getReadReceiptInfoV4()` | 获取已读回执 V4 信息
    `void` | `setReadReceiptInfoV4(ReadReceiptInfoV4 readReceiptInfo)` | 设置已读回执 V4 信息
    `MessageConfig` | `getMessageConfig()` | 获取消息配置
    `void` | `setMessageConfig(MessageConfig messageConfig)` | 设置消息配置
    `MessagePushConfig` | `getMessagePushConfig()` | 获取推送配置
    `void` | `setMessagePushConfig(MessagePushConfig messagePushConfig)` | 设置推送配置
    `boolean` | `isOffline()` | 是否是离线消息 从数据库获取的消息，该字段无效 只在接收消息的回调方法中有效如果消息为离线消息，则为 YES 其他情况均为 NO
    `void` | `setOffline(boolean offLine)` | 设置是否是离线消息
    `Map<String, String>` | `getExpansion()` | 消息扩展信息列表
    `List<String>` | `getDirectedUserIds()` | 获取定向用户列表 单聊会话类型返回空
    `void` | `setDirectedUserIds(List<String> directedUserIds)` | 设置定向用户列表
    `boolean` | `isEmptyContent()` |
    `static Message` | `obtain(String targetId, ConversationType type, MessageContent content)` | 构造函数。
    `static Message` | `obtain(ConversationIdentifier conversationIdentifier, MessageContent content)` | 构造函数。
    `static Message` | `obtain(String targetId, ConversationType type, String channelId, MessageContent content)` | 构造函数。
    `void` | `writeToParcel(Parcel dest, int flags)` |
    `int` | `describeContents()` |
    `String` | `getUId()` | 获取服务器消息唯一 id（在同一个 AppKey 下全局唯一）
    `void` | `setUId(String UId)` | 设置服务器消息唯一 id（在同一个 AppKey 下全局唯一）
    `GroupReadReceiptInfoV2` | `getGroupReadReceiptInfoV2()` | 获取已读回执 V2 信息
    `void` | `setGroupReadReceiptInfoV2(GroupReadReceiptInfoV2 v2)` | 设置已读回执 V2 信息
    `boolean` | `isCanIncludeExpansion()` | 消息是否可以包含扩展信息 该属性在消息发送时确定，发送之后不能再做修改；扩展信息只支持单聊和群组，其它会话类型不能设置扩展信息。
    `void` | `setExpansion(HashMap<String, String> expansion)` | 设置消息扩展信息列表 扩展信息只支持单聊和群组，其它会话类型不能设置扩展信息。 默认消息扩展字典 key 长度不超过 32 ，value 长度不超过 4096 ，单次设置扩展数量最大为 20，消息的扩展总数不能超过 300
    `boolean` | `isMayHasMoreMessagesBefore()` |
    `boolean` | `isHasChanged()` | 消息是否被修改过
    `boolean` | `isDisableUpdateLastMessage()` |
    `boolean` | `isNeedReceipt()` |
    `boolean` | `isSentReceipt()` |
    `int` | `hashCode()` |
    `boolean` | `equals(Object o)` |
    `String` | `toString()` |
    `void` | `setCanIncludeExpansion(boolean canIncludeExpansion)` | 设置是否可以包含扩展信息
    `void` | `setHasChanged(boolean hasChanged)` | 设置消息是否被修改过
    `void` | `setDisableUpdateLastMessage(boolean disableUpdateLastMessage)` |
    `void` | `setNeedReceipt(boolean needReceipt)` |
    `void` | `setSentReceipt(boolean sentReceipt)` |

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

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

- - ### Constructor Detail

    - #### Message

          Message()

      默认构造函数。

    - #### Message

          Message(Parcel in)

  - ### Method Detail

    - #### getConversationType

           ConversationType getConversationType()

      获取会话类型。

      Returns:

        会话类型。

    - #### setConversationType

           void setConversationType(ConversationType conversationType)

      设置会话类型。

      Parameters:
        `conversationType` - 会话类型。

    - #### getTargetId

           String getTargetId()

      获取目标 id。

      根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。

      Returns:

        目标 id 的值。

    - #### setTargetId

           void setTargetId(String targetId)

      设置目标 id。

      根据不同的 conversationType，可能是用户 id、讨论组 id、群组 id 或聊天室 id。

      Parameters:
        `targetId` - 目标 id 的值。

    - #### getChannelId

           String getChannelId()

      获取频道 id

      Returns:

        频道 id

    - #### setChannelId

           void setChannelId(String channelId)

      设置频道 id，长度限制 20 字符

      Parameters:
        `channelId` - 频道 id

    - #### getMessageId

           int getMessageId()

      获取本地存储的消息的唯一值（数据库索引唯一值）。

      Returns:

        消息本地存储的消息的唯一值（数据库索引唯一值）。

    - #### setMessageId

           void setMessageId(int messageId)

      设置本地存储的消息的唯一值（数据库索引唯一值）。

      Parameters:
        `messageId` - 本地存储的消息的唯一值（数据库索引唯一值）。

    - #### getMessageDirection

           Message.MessageDirection getMessageDirection()

      获取消息方向。

      Returns:

        消息方向。

    - #### setMessageDirection

           void setMessageDirection(Message.MessageDirection messageDirection)

      设置消息方向。

      Parameters:
        `messageDirection` - 消息方向。

    - #### getSenderUserId

           String getSenderUserId()

      获取发送消息的用户 id。

      Returns:

        发送消息的用户 id。

    - #### setSenderUserId

           void setSenderUserId(String senderUserId)

      设置发送消息的用户 id。

      Parameters:
        `senderUserId` - 发送消息的用户 id。

    - #### getReceivedStatus

           Message.ReceivedStatus getReceivedStatus()

      获取消息的接收状态。

      Returns:

        消息的接收状态。

    - #### setReceivedStatus

           void setReceivedStatus(Message.ReceivedStatus receivedStatus)

      设置消息的接收状态。

      Parameters:
        `receivedStatus` - 消息的接收状态。

    - #### getSentStatus

           Message.SentStatus getSentStatus()

      获取消息的发送状态。

      Returns:

        消息的发送状态。

    - #### setSentStatus

           void setSentStatus(Message.SentStatus sentStatus)

      设置消息的发送状态。

      Parameters:
        `sentStatus` - 消息的发送状态。

    - #### getReceivedTime

           long getReceivedTime()

      获取消息接收时间（Unix 时间戳、毫秒）。

      接收时间为消息到达接收客户端时客户端的本地时间。

      Returns:

        消息接收时间（Unix 时间戳、毫秒）。

    - #### setReceivedTime

           void setReceivedTime(long receivedTime)

      设置消息接收时间（Unix 时间戳、毫秒）。

      接收时间为消息到达接收客户端时客户端的本地时间。

      Parameters:
        `receivedTime` - 消息接收时间（Unix 时间戳、毫秒）。

    - #### getSentTime

           long getSentTime()

      获取消息发送时间（Unix 时间戳、毫秒）。

      发送时间为消息从发送客户端到达服务器时的服务器时间。

      Returns:

        消息发送时间（Unix 时间戳、毫秒）。

    - #### setSentTime

           void setSentTime(long sentTime)

      设置消息发送时间（Unix 时间戳、毫秒）。

      发送时间为消息从发送客户端到达服务器时的服务器时间。

      Parameters:
        `sentTime` - 消息发送时间（Unix 时间戳、毫秒）。

    - #### getReadTime

           long getReadTime()

    - #### setReadTime

           void setReadTime(long readTime)

    - #### getObjectName

           String getObjectName()

      获取消息对象名称。

      消息对象名称即 io.rong.imlib.MessageTag 注解中的 value 值。

      Returns:

        消息对象名称。

    - #### setObjectName

           void setObjectName(String objectName)

      设置消息对象名称。

      消息对象名称即 io.rong.imlib.MessageTag 注解中的 value 值。

      Parameters:
        `objectName` - 消息对象名称。

    - #### getContent

           MessageContent getContent()

      获取消息内容。

      Returns:

        消息内容。

    - #### setContent

           void setContent(MessageContent content)

      设置消息内容。

      Parameters:
        `content` - 消息内容。

    - #### getExtra

           String getExtra()

      获取消息的附加信息。

      Returns:

        消息的附加信息。

    - #### setExtra

           void setExtra(String extra)

      设置消息的附加信息。

      Parameters:
        `extra` - 消息的附加信息。

    - #### getReadReceiptInfo

           ReadReceiptInfo getReadReceiptInfo()

      获取已读回执状态

      Returns:

        已读回执状态

    - #### setReadReceiptInfo

           void setReadReceiptInfo(ReadReceiptInfo readReceiptInfo)

      设置已读回执状态

      Parameters:
        `readReceiptInfo` - 已读回执状态

    - #### getReadReceiptInfoV4

           ReadReceiptInfoV4 getReadReceiptInfoV4()

      获取已读回执 V4 信息

      Returns:

        已读回执 V4 信息

    - #### setReadReceiptInfoV4

           void setReadReceiptInfoV4(ReadReceiptInfoV4 readReceiptInfo)

      设置已读回执 V4 信息

      Parameters:
        `readReceiptInfo` - 已读回执 V4 信息

    - #### getMessageConfig

           MessageConfig getMessageConfig()

      获取消息配置

      Returns:

        MessageConfig 消息配置

    - #### setMessageConfig

           void setMessageConfig(MessageConfig messageConfig)

      设置消息配置

      Parameters:
        `messageConfig` - 消息配置

    - #### getMessagePushConfig

           MessagePushConfig getMessagePushConfig()

      获取推送配置

      Returns:

        MessagePushConfig 推送配置

    - #### setMessagePushConfig

           void setMessagePushConfig(MessagePushConfig messagePushConfig)

      设置推送配置

      Parameters:
        `messagePushConfig` - 推送配置

    - #### isOffline

           boolean isOffline()

      是否是离线消息

      从数据库获取的消息，该字段无效

      只在接收消息的回调方法中有效

      如果消息为离线消息，则为 YES 其他情况均为 NO

    - #### setOffline

           void setOffline(boolean offLine)

      设置是否是离线消息

      Parameters:
        `offLine` - 是否是离线消息

    - #### getExpansion

           Map<String, String> getExpansion()

      消息扩展信息列表

      Returns:

        消息扩展信息列表

    - #### getDirectedUserIds

           List<String> getDirectedUserIds()

      获取定向用户列表

      单聊会话类型返回空

      Returns:

        定向用户列表

      Since:

        5.8.0

    - #### setDirectedUserIds

           void setDirectedUserIds(List<String> directedUserIds)

      设置定向用户列表

      Parameters:
        `directedUserIds` - 定向用户列表
      Since:

        5.8.0

    - #### isEmptyContent

           boolean isEmptyContent()

    - #### obtain

           static Message obtain(String targetId, ConversationType type, MessageContent content)

      构造函数。

      Parameters:
        `targetId` - 会话 id
        `type` - 会话类型
        `content` - 消息内容
      Returns:

        消息实体

    - #### obtain

           static Message obtain(ConversationIdentifier conversationIdentifier, MessageContent content)

      构造函数。

      Parameters:
        `conversationIdentifier` - 会话标识
        `content` - 消息内容
      Returns:

        消息实体

    - #### obtain

           static Message obtain(String targetId, ConversationType type, String channelId, MessageContent content)

      构造函数。

      Parameters:
        `targetId` - 会话 id
        `type` - 会话类型
        `channelId` - 会话 channelId
        `content` - 消息内容
      Returns:

        消息实体

    - #### writeToParcel

           void writeToParcel(Parcel dest, int flags)

    - #### describeContents

           int describeContents()

    - #### getUId

           String getUId()

      获取服务器消息唯一 id（在同一个 AppKey 下全局唯一）

      Returns:

        uid 服务器消息唯一 id（在同一个 AppKey 下全局唯一）

    - #### setUId

           void setUId(String UId)

      设置服务器消息唯一 id（在同一个 AppKey 下全局唯一）

      Parameters:
        `UId` - 服务器消息唯一 id（在同一个 AppKey 下全局唯一）

    - #### getGroupReadReceiptInfoV2

           GroupReadReceiptInfoV2 getGroupReadReceiptInfoV2()

      获取已读回执 V2 信息

      Returns:

        已读回执 V2 信息

    - #### setGroupReadReceiptInfoV2

           void setGroupReadReceiptInfoV2(GroupReadReceiptInfoV2 v2)

      设置已读回执 V2 信息

      Parameters:
        `v2` - 已读回执 V2 信息

    - #### isCanIncludeExpansion

           boolean isCanIncludeExpansion()

      消息是否可以包含扩展信息

      该属性在消息发送时确定，发送之后不能再做修改；扩展信息只支持单聊和群组，其它会话类型不能设置扩展信息。

      Returns:

        消息是否可以包含扩展信息

    - #### setExpansion

           void setExpansion(HashMap<String, String> expansion)

      设置消息扩展信息列表

      扩展信息只支持单聊和群组，其它会话类型不能设置扩展信息。

      默认消息扩展字典 key 长度不超过 32 ，value 长度不超过 4096 ，单次设置扩展数量最大为 20，消息的扩展总数不能超过 300

      Parameters:
        `expansion` - 消息扩展信息列表

    - #### isMayHasMoreMessagesBefore

           boolean isMayHasMoreMessagesBefore()

    - #### isHasChanged

           boolean isHasChanged()

      消息是否被修改过

      Returns:

        是否被修改过

    - #### isDisableUpdateLastMessage

           boolean isDisableUpdateLastMessage()

    - #### isNeedReceipt

           boolean isNeedReceipt()

    - #### isSentReceipt

           boolean isSentReceipt()

    - #### hashCode

           int hashCode()

    - #### equals

           boolean equals(Object o)

    - #### toString

           String toString()

    - #### setCanIncludeExpansion

           void setCanIncludeExpansion(boolean canIncludeExpansion)

      设置是否可以包含扩展信息

      Parameters:
        `canIncludeExpansion` - 是否可以包含扩展信息

    - #### setHasChanged

           void setHasChanged(boolean hasChanged)

      设置消息是否被修改过

      Parameters:
        `hasChanged` - 是否被修改过

    - #### setDisableUpdateLastMessage

           void setDisableUpdateLastMessage(boolean disableUpdateLastMessage)

    - #### setNeedReceipt

           void setNeedReceipt(boolean needReceipt)

    - #### setSentReceipt

           void setSentReceipt(boolean sentReceipt)