Package io.rong.imlib.model

## Class Conversation

- All Implemented Interfaces:

      public class Conversation

  会话的实体，用来容纳和存储客户端的会话信息，对应会话列表中的会话。

  Author:

    rongcloud

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `public enum` | `Conversation.PublicServiceType` | 公众服务类型枚举。
    `public enum` | `Conversation.ConversationType` | 会话类型枚举。
    `public enum` | `Conversation.ConversationNotificationStatus` | 会话提醒状态。

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `public Conversation.ConversationType` | `conversationType` |
    `public String` | `targetId` |
    `public String` | `channelId` |
    `public String` | `conversationTitle` |
    `public String` | `portraitUrl` |
    `public int` | `unreadMessageCount` |
    `public boolean` | `isTop` |
    `public boolean` | `isTopForTag` |
    `public long` | `operationTime` |
    `public String` | `senderUserName` |
    `public String` | `draft` |
    `public Conversation.ConversationNotificationStatus` | `notificationStatus` |
    `public int` | `mentionedCount` |
    `public int` | `pushNotificationLevel` |
    `public IRongCoreEnum.UltraGroupChannelType` | `channelType` |
    `public long` | `firstUnreadMsgSendTime` |
    `public final static Creator<Conversation>` | `CREATOR` |

  - ### Constructor Summary

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

  - ### Enum Constant Summary

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

  - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `Conversation.ConversationType` | `getConversationType()` | 获取会话类型。
    `void` | `setConversationType(Conversation.ConversationType conversationType)` | 设置会话类型。
    `String` | `getTargetId()` | 获取会话 id。 根据不同的 conversationType，可能是聊天 id、讨论组 id、群组 id 或聊天室 id。
    `void` | `setTargetId(String targetId)` | 设置会话 id。 根据不同的 conversationType，可能是聊天 id、讨论组 id、群组 id 或聊天室 id。
    `String` | `getChannelId()` | 消息所属会话的业务标识。
    `void` | `setChannelId(String channelId)` | 设置 消息所属会话的业务标识，长度限制 20 字符
    `String` | `getConversationTitle()` | 获取会话标题。
    `void` | `setConversationTitle(String conversationTitle)` | 设置会话标题。
    `String` | `getPortraitUrl()` | 获取会话头像地址
    `void` | `setPortraitUrl(String portraitUrl)` | 设置会话头像地址
    `int` | `getUnreadMessageCount()` | 获取未读消息数。
    `void` | `setUnreadMessageCount(int unreadMessageCount)` | 设置未读消息数。
    `boolean` | `isTop()` | 获取置顶状态。
    `void` | `setTop(boolean isTop)` | 设置置顶状态。
    `boolean` | `isTopForTag()` | 获取表示当前会话在此 tag 下的置顶状态。 仅在通过tag获取会话时{#getConversationsFromTagByPage}，此字段有效。
    `void` | `setTopForTag(boolean isTopForTag)` | 设置表示当前会话在此 tag 下的置顶状态。
    `long` | `getOperationTime()` | 获取该会话的操作时间（Unix时间戳、毫秒），用于分页获取会话列表时传入的时间戳 初始值与 sentTime 相同，置顶等操作会更新此时间戳
    `void` | `setOperationTime(long operationTime)` | 设置该会话的操作时间（Unix时间戳、毫秒）
    `String` | `getSenderUserName()` | 获取发送消息的用户名称。
    `void` | `setSenderUserName(String senderUserName)` | 设置发送消息的用户名称。
    `String` | `getDraft()` | 获取会话中存在的草稿。
    `void` | `setDraft(String draft)` | 设置会话中存在的草稿。
    `Conversation.ConversationNotificationStatus` | `getNotificationStatus()` | 获取消息通知状态。
    `void` | `setNotificationStatus(Conversation.ConversationNotificationStatus notificationStatus)` | 设置获取通知消息状态。
    `int` | `getMentionedCount()` | 获取本会话里自己被 @ 的未读消息数。
    `void` | `setMentionedCount(int count)` | 设置本会话里自己被 @ 的未读消息数。
    `int` | `getPushNotificationLevel()` | 获取免打扰通知级别
    `void` | `setPushNotificationLevel(int pushNotificationLevel)` | 设置免打扰通知级别
    `IRongCoreEnum.UltraGroupChannelType` | `getChannelType()` | 获取会话的超级群频道类型
    `void` | `setChannelType(IRongCoreEnum.UltraGroupChannelType channelType)` | 设置会话的超级群频道类型
    `long` | `getFirstUnreadMsgSendTime()` | 获取会话中第一条未读消息时间戳（Unix时间戳、毫秒）
    `void` | `setFirstUnreadMsgSendTime(long firstUnreadMsgSendTime)` | 设置会话中第一条未读消息时间戳（Unix时间戳、毫秒）
    `static Conversation` | `obtain(Conversation.ConversationType type, String id, String title)` | 构造函数。
    `void` | `writeToParcel(Parcel dest, int flags)` |
    `int` | `describeContents()` |
    `ReceivedStatus` | `getReceivedStatus()` | 获取会话中最后一条消息的接收状态。
    `void` | `setReceivedStatus(ReceivedStatus receivedStatus)` | 设置会话中最后一条消息的接收状态。
    `SentStatus` | `getSentStatus()` | 获取会话中最后一条消息的发送状态。
    `void` | `setSentStatus(SentStatus sentStatus)` | 设置会话中最后一条消息的发送状态。
    `long` | `getReceivedTime()` | 获取会话中最后一条消息的接收时间（Unix时间戳、毫秒）。 接收时间为消息到达接收客户端时客户端的本地时间。
    `void` | `setReceivedTime(long receivedTime)` | 设置会话中最后一条消息的接收时间（Unix时间戳、毫秒）。
    `long` | `getSentTime()` | 获取会话中最后一条消息的发送时间（Unix时间戳、毫秒） 发送时间为消息从发送客户端到达服务器时的服务器时间。
    `void` | `setSentTime(long sentTime)` | 设置会话中最后一条消息的发送时间（Unix时间戳、毫秒） 发送时间为消息从发送客户端到达服务器时的服务器时间。
    `String` | `getObjectName()` | 获取消息对象名称。 消息对象名称即 io.rong.imlib.
    `void` | `setObjectName(String objectName)` | 设置消息对象名称。 消息对象名称即 io.rong.imlib.
    `String` | `getSenderUserId()` | 获取发送消息的用户 id。
    `void` | `setSenderUserId(String senderUserId)` | 设置发送消息的用户 id。
    `int` | `getLatestMessageId()` | 获取本会话最后一条消息 id。（数据库索引唯一值）
    `void` | `setLatestMessageId(int latestMessageId)` | 设置本会话最后一条消息 id。（数据库索引唯一值）
    `MessageContent` | `getLatestMessage()` | 获取会话中最后一条消息内容。
    `void` | `setLatestMessage(MessageContent latestMessageContent)` | 设置会话中最后一条消息内容。
    `int` | `getUnreadMentionedCount()` | 获取本会话里自己被 @ 的未读消息数。
    `int` | `getUnreadMentionedMeCount()` | 获取本会话里仅自己被 @ 的未读消息数。
    `MessageDirection` | `getLatestMessageDirection()` | 获取消息方向。
    `void` | `setLatestMessageDirection(MessageDirection latestMessageDirection)` | 设置消息方向。
    `String` | `getLatestMessageExtra()` | 获取消息的附加信息。
    `void` | `setLatestMessageExtra(String latestMessageExtra)` | 设置消息的附加信息。
    `String` | `getLatestMessageUId()` | 获取服务器消息唯一 id（在同一个 AppKey 下全局唯一）
    `void` | `setLatestMessageUId(String latestMessageUId)` | 设置服务器消息唯一 id（在同一个 AppKey 下全局唯一）
    `ReadReceiptInfo` | `getLatestMessageReadReceiptInfo()` | 获取最后一条消息已读回执状态
    `void` | `setLatestMessageReadReceiptInfo(ReadReceiptInfo latestMessageReadReceiptInfo)` | 设置最后一条消息已读回执状态
    `MessageConfig` | `getLatestMessageConfig()` | 获取消息配置
    `void` | `setLatestMessageConfig(MessageConfig latestMessageConfig)` | 设置消息配置
    `boolean` | `isLatestCanIncludeExpansion()` | 消息是否可以包含扩展信息 该属性在消息发送时确定，发送之后不能再做修改；扩展信息只支持单聊和群组，其它会话类型不能设置扩展信息。
    `void` | `setLatestCanIncludeExpansion(boolean latestCanIncludeExpansion)` | 设置是否可以包含扩展信息
    `Map<String, String>` | `getLatestExpansion()` | 获取最后一条消息消息扩展信息列表
    `void` | `setLatestExpansion(Map<String, String> latestExpansion)` | 设置最后一条消息消息扩展信息列表
    `Message` | `getMessage()` | 获取会话的LatestMessage
    `void` | `setMessage(Message latestMessage)` | 会话的LatestMessage
    `void` | `setMentionedMeCount(int count)` | 设置本会话里仅自己被 @ 的未读消息数。

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

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

- - ### Constructor Detail

    - #### Conversation

          Conversation()

      默认构造函数。

    - #### Conversation

          Conversation(Parcel in)

  - ### Method Detail

    - #### getConversationType

           Conversation.ConversationType getConversationType()

      获取会话类型。

      Returns:

        会话类型。

    - #### setConversationType

           void setConversationType(Conversation.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()

      消息所属会话的业务标识。

      Returns:

        消息所属会话的业务标识。

    - #### setChannelId

           void setChannelId(String channelId)

      设置 消息所属会话的业务标识，长度限制 20 字符

      Parameters:
        `channelId` - 消息所属会话的业务标识。

    - #### getConversationTitle

           String getConversationTitle()

      获取会话标题。

      Returns:

        会话标题。

    - #### setConversationTitle

           void setConversationTitle(String conversationTitle)

      设置会话标题。

      Parameters:
        `conversationTitle` - 会话标题。

    - #### getPortraitUrl

           String getPortraitUrl()

      获取会话头像地址

      Returns:

        会话头像地址

    - #### setPortraitUrl

           void setPortraitUrl(String portraitUrl)

      设置会话头像地址

      Parameters:
        `portraitUrl` - 会话头像地址

    - #### getUnreadMessageCount

           int getUnreadMessageCount()

      获取未读消息数。

      Returns:

        未读消息数。

    - #### setUnreadMessageCount

           void setUnreadMessageCount(int unreadMessageCount)

      设置未读消息数。

      Parameters:
        `unreadMessageCount` - 未读消息数。

    - #### isTop

           boolean isTop()

      获取置顶状态。

      Returns:

        置顶状态。

    - #### setTop

           void setTop(boolean isTop)

      设置置顶状态。

      Parameters:
        `isTop` - 置顶状态。

    - #### isTopForTag

           boolean isTopForTag()

      获取表示当前会话在此 tag 下的置顶状态。

      仅在通过tag获取会话时{#getConversationsFromTagByPage}，此字段有效。

      Returns:

        置顶状态。

      Since:

        5.6.4

    - #### setTopForTag

           void setTopForTag(boolean isTopForTag)

      设置表示当前会话在此 tag 下的置顶状态。

      Parameters:
        `isTopForTag` - 置顶状态。
      Since:

        5.6.4

    - #### getOperationTime

           long getOperationTime()

      获取该会话的操作时间（Unix时间戳、毫秒），用于分页获取会话列表时传入的时间戳

      初始值与 sentTime 相同，置顶等操作会更新此时间戳

      Returns:

        操作时间

      Since:

        5.6.8

    - #### setOperationTime

           void setOperationTime(long operationTime)

      设置该会话的操作时间（Unix时间戳、毫秒）

      Parameters:
        `operationTime` - 操作时间
      Since:

        5.6.8

    - #### getSenderUserName

           String getSenderUserName()

      获取发送消息的用户名称。

      Returns:

        发送消息的用户名称。

    - #### setSenderUserName

           void setSenderUserName(String senderUserName)

      设置发送消息的用户名称。

      Parameters:
        `senderUserName` - 发送消息的用户名称。

    - #### getDraft

           String getDraft()

      获取会话中存在的草稿。

      Returns:

        会话中存在的草稿。

    - #### setDraft

           void setDraft(String draft)

      设置会话中存在的草稿。

      Parameters:
        `draft` - 会话中存在的草稿。

    - #### getNotificationStatus

           Conversation.ConversationNotificationStatus getNotificationStatus()

      获取消息通知状态。

      Returns:

        消息通知状态。

    - #### setNotificationStatus

           void setNotificationStatus(Conversation.ConversationNotificationStatus notificationStatus)

      设置获取通知消息状态。

      Parameters:
        `notificationStatus` - 消息状态。

    - #### getMentionedCount

          @Deprecated() int getMentionedCount()

      获取本会话里自己被 @ 的未读消息数。

      Returns:

        被@的未读消息数量

    - #### setMentionedCount

           void setMentionedCount(int count)

      设置本会话里自己被 @ 的未读消息数。

      Parameters:
        `count` - 未读消息数。

    - #### getPushNotificationLevel

           int getPushNotificationLevel()

      获取免打扰通知级别

      Returns:

        免打扰通知级别

    - #### setPushNotificationLevel

           void setPushNotificationLevel(int pushNotificationLevel)

      设置免打扰通知级别

      Parameters:
        `pushNotificationLevel` - 免打扰通知级别

    - #### getChannelType

           IRongCoreEnum.UltraGroupChannelType getChannelType()

      获取会话的超级群频道类型

      Returns:

        频道类型

      Since:

        5.2.4

    - #### setChannelType

           void setChannelType(IRongCoreEnum.UltraGroupChannelType channelType)

      设置会话的超级群频道类型

      Parameters:
        `channelType` - 频道类型
      Since:

        5.2.4

    - #### getFirstUnreadMsgSendTime

           long getFirstUnreadMsgSendTime()

      获取会话中第一条未读消息时间戳（Unix时间戳、毫秒）

      Returns:

        第一条未读消息时间戳

      Since:

        5.2.5

    - #### setFirstUnreadMsgSendTime

           void setFirstUnreadMsgSendTime(long firstUnreadMsgSendTime)

      设置会话中第一条未读消息时间戳（Unix时间戳、毫秒）

      Parameters:
        `firstUnreadMsgSendTime` - 第一条未读消息时间戳
      Since:

        5.2.5

    - #### obtain

           static Conversation obtain(Conversation.ConversationType type, String id, String title)

      构造函数。

      Parameters:
        `type` - 会话类型。
        `id` - 会话 id。
        `title` - 会话标题。

    - #### writeToParcel

           void writeToParcel(Parcel dest, int flags)

    - #### describeContents

           int describeContents()

    - #### getReceivedStatus

           ReceivedStatus getReceivedStatus()

      获取会话中最后一条消息的接收状态。

      Returns:

        会话中最后一条消息的接收状态。

    - #### setReceivedStatus

           void setReceivedStatus(ReceivedStatus receivedStatus)

      设置会话中最后一条消息的接收状态。

      Parameters:
        `receivedStatus` - 会话中最后一条消息的接收状态。

    - #### getSentStatus

           SentStatus getSentStatus()

      获取会话中最后一条消息的发送状态。

      Returns:

        会话中最后一条消息的发送状态。

    - #### setSentStatus

           void setSentStatus(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时间戳、毫秒）

    - #### getObjectName

           String getObjectName()

      获取消息对象名称。

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

      Returns:

        消息对象名称。

    - #### setObjectName

           void setObjectName(String objectName)

      设置消息对象名称。

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

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

    - #### getSenderUserId

           String getSenderUserId()

      获取发送消息的用户 id。

      Returns:

        发送消息的用户 id。

    - #### setSenderUserId

           void setSenderUserId(String senderUserId)

      设置发送消息的用户 id。

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

    - #### getLatestMessageId

           int getLatestMessageId()

      获取本会话最后一条消息 id。（数据库索引唯一值）

      Returns:

        本会话最后一条消息 id。

    - #### setLatestMessageId

           void setLatestMessageId(int latestMessageId)

      设置本会话最后一条消息 id。（数据库索引唯一值）

      Parameters:
        `latestMessageId` - 本会话最后一条消息 id。

    - #### getLatestMessage

           MessageContent getLatestMessage()

      获取会话中最后一条消息内容。

      Returns:

        会话中最后一条消息内容。

    - #### setLatestMessage

           void setLatestMessage(MessageContent latestMessageContent)

      设置会话中最后一条消息内容。

      Parameters:
        `latestMessageContent` - 会话中最后一条消息内容。

    - #### getUnreadMentionedCount

           int getUnreadMentionedCount()

      获取本会话里自己被 @ 的未读消息数。

      Returns:

        被@的未读消息数量

    - #### getUnreadMentionedMeCount

           int getUnreadMentionedMeCount()

      获取本会话里仅自己被 @ 的未读消息数。

      Returns:

        被@的未读消息数量

    - #### getLatestMessageDirection

           MessageDirection getLatestMessageDirection()

      获取消息方向。

      Returns:

        消息方向。

    - #### setLatestMessageDirection

           void setLatestMessageDirection(MessageDirection latestMessageDirection)

      设置消息方向。

      Parameters:
        `latestMessageDirection` - 消息方向。

    - #### getLatestMessageExtra

           String getLatestMessageExtra()

      获取消息的附加信息。

      Returns:

        消息的附加信息。

    - #### setLatestMessageExtra

           void setLatestMessageExtra(String latestMessageExtra)

      设置消息的附加信息。

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

    - #### getLatestMessageUId

           String getLatestMessageUId()

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

      Returns:

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

    - #### setLatestMessageUId

           void setLatestMessageUId(String latestMessageUId)

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

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

    - #### getLatestMessageReadReceiptInfo

           ReadReceiptInfo getLatestMessageReadReceiptInfo()

      获取最后一条消息已读回执状态

      Returns:

        已读回执状态

    - #### setLatestMessageReadReceiptInfo

           void setLatestMessageReadReceiptInfo(ReadReceiptInfo latestMessageReadReceiptInfo)

      设置最后一条消息已读回执状态

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

    - #### getLatestMessageConfig

           MessageConfig getLatestMessageConfig()

      获取消息配置

      Returns:

        MessageConfig 消息配置

    - #### setLatestMessageConfig

           void setLatestMessageConfig(MessageConfig latestMessageConfig)

      设置消息配置

      Parameters:
        `latestMessageConfig` - 消息配置

    - #### isLatestCanIncludeExpansion

           boolean isLatestCanIncludeExpansion()

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

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

      Returns:

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

    - #### setLatestCanIncludeExpansion

           void setLatestCanIncludeExpansion(boolean latestCanIncludeExpansion)

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

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

    - #### getLatestExpansion

           Map<String, String> getLatestExpansion()

      获取最后一条消息消息扩展信息列表

      Returns:

        消息扩展信息列表

    - #### setLatestExpansion

           void setLatestExpansion(Map<String, String> latestExpansion)

      设置最后一条消息消息扩展信息列表

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

    - #### getMessage

           Message getMessage()

      获取会话的LatestMessage

      Since:

        5.8.0

    - #### setMessage

           void setMessage(Message latestMessage)

      会话的LatestMessage

      Since:

        5.8.0

    - #### setMentionedMeCount

           void setMentionedMeCount(int count)

      设置本会话里仅自己被 @ 的未读消息数。

      Parameters:
        `count` - 未读消息数。