Skip to content

最近会话管理

需要实现最近会话数据源 最近会话数据源

获取最近会话列表

所有最近会话

Java

java
// 查询所有最近会话
WKIM.getInstance().getConversationManager().getAll();

Kotlin

kotlin
// 查询所有最近会话
WKIM.getInstance().conversationManager.getAll()

新消息

只有第一次打开应用时,需要同步最近会话列表, 后续最近会话列表的变化,通过监听来获取

Java

java
// 监听刷新最近会话消息
 WKIM.getInstance().getConversationManager().addOnRefreshMsgListener("key", new IRefreshConversationMsg() {
            @Override
            public void onRefreshConversationMsg(WKUIConversationMsg wkUIConversationMsg, boolean isEnd) {
                // wkUIConversationMsg 最近会话消息内容 UI上已有该会话需进行更新,反之添加到UI上
                // isEnd 为了防止频繁刷新UI,当isEnd为true可刷新UI
            }
        });

// 退出页面时移除监听
WKIM.getInstance().getConversationManager().removeOnRefreshMsgListener("key");

Kotlin

kotlin
// 监听刷新最近会话消息
 WKIM.getInstance().conversationManager.addOnRefreshMsgListener(
            "key"
        ) { wkUIConversationMsg, isEnd ->
            // wkUIConversationMsg 最近会话消息内容 UI上已有该会话需进行更新,反之添加到UI上
            // isEnd 为了防止频繁刷新UI,当isEnd为true可刷新UI
        }

// 退出页面时移除监听
WKIM.getInstance().conversationManager.removeOnRefreshMsgListener("key")

移除最近会话

删除

Java

java
// 删除某个最近会话
WKIM.getInstance().getConversationManager().deleteWitchChannel(String channelId, byte channelType);

Kotlin

kotlin
// 删除某个最近会话
WKIM.getInstance().conversationManager.deleteWitchChannel(channelId, channelType)

监听删除

在删除某个最近会话时会回调此方法

Java

java
// 监听删除最近会话消息
WKIM.getInstance().getConversationManager().addOnDeleteMsgListener("key", new IDeleteConversationMsg() {
            @Override
            public void onDelete(String channelID, byte channelType) {
                // channelID 聊天频道ID
                // channelType 聊天频道类型
            }
        });

// 退出页面时移除监听
WKIM.getInstance().getConversationManager().removeOnDeleteMsgListener("key");

Kotlin

kotlin
// 监听删除最近会话消息
WKIM.getInstance().conversationManager.addOnDeleteMsgListener(
            "key"
        ) { channelID, channelType ->
            // channelID 聊天频道ID
            // channelType 聊天频道类型
        }

// 退出页面时移除监听
WKIM.getInstance().conversationManager.removeOnDeleteMsgListener("key")

常用方法

Java

java
// 查询所有最近会话
WKIM.getInstance().getConversationManager().getAll();

// 修改消息红点
WKIM.getInstance().getConversationManager().updateRedDot(String channelID, byte channelType, int redDot);

// 删除某个会话
WKIM.getInstance().getConversationManager().deleteMsg(String channelId, byte channelType);

Kotlin

kotlin
// 查询所有最近会话
WKIM.getInstance().conversationManager.getAll()

// 修改消息红点
WKIM.getInstance().conversationManager.updateRedDot( channelID, channelType, redDot)

// 删除某个会话
WKIM.getInstance().conversationManager.deleteMsg( channelId, channelType)

数据结构说明

WKUIConversationMsg 类核心数据

java
public class WKUIConversationMsg {
  // 最后一条消息时间
  public long lastMsgTimestamp;
  // 消息频道 频道资料,可能为空,如果为空可以调用 WKChannelManager 的 fetchChannelInfo(channelID, channelType); 触发频道信息变更
  private WKChannel wkChannel;
  // 消息正文
  private WKMsg wkMsg;
  // 未读消息数量
  public int unreadCount;
  // 远程扩展
  private WKConversationMsgExtra remoteMsgExtra()
  // 本地扩展字段
  public HashMap<String, Object> localExtraMap;
  //  最近会话提醒项 如[有人@你][群内审核]等
  public List<WKReminder> getReminderList(){
    // ...
  }
  // 获取远程扩展
  public WKConversationMsgExtra getRemoteMsgExtra(){
    // ...
  }
  // 会话channel信息
  public WKChannel getWkChannel(){
    // ...
  }
}

本文档内容版权属于 上海信必达网络科技有限公司,保留所有权利