ZEGO 即时通讯 SDK(ZIM SDK)2.25.0 版本新增“消息置顶”功能,用户可以将会话中的消息固定在会话顶部,方便会话中的所有用户快速查看重要消息。
本文将简单介绍如何在 Android 平台中集成 ZIM SDK 实现聊天消息置顶的功能。
1. 必备条件
在使用 ZIM SDK 前,请确保开发环境满足以下要求:
- Android Studio 2020.3.1 或以上版本。
- Android SDK 25、Android SDK Build-Tools 25.0.2、Android SDK Platform-Tools 25.x.x 或以上版本。
- Android 4.4 或以上版本的设备或模拟器(推荐使用真机)。
- 已在 ZEGO 控制台 创建项目,获取到了接入 ZIM SDK 服务所需的 AppID、AppSign。ZIM 服务权限不是默认开启的,使用前,请先在 ZEGO 控制台自助开通 ZIM 服务(详情请参考 项目管理 – 即时通讯),若无法开通 ZIM 服务,请联系 ZEGO 技术支持开通。
- 集成 ZIM SDK,实现基本收发消息
2. 监听消息置顶状态变更
会话成员注册 setEventHandler 监听 onMessagePinStatusChanged 回调监听消息置顶状态变更的相关通知。当其他用户置顶消息后,可以通过该通知获取置顶消息的状态变化、置顶时间和置顶操作者等相关信息。
示例代码:
// 注册事件
zim.setEventHandler(new ZIMEventHandler() {
@Override
public void onMessagePinStatusChanged(ZIM zim, ArrayList<ZIMMessagePinStatusChangeInfo> changeInfoList) {
// 收到消息置顶状态变更通知后,可于此处获取到置顶的消息/取消置顶的消息以此刷新 UI
}
});
3. 置顶消息
会话成员可以调用 pinMessage 接口置顶会话内成功发送的消息。
支持置顶的消息类型如下表所示:
- 文本消息
- 组合消息
- 图片消息
- 文件消息
- 音频消息
- 视频消息
- 合并消息
- 自定义消息
示例代码:
// 置顶一条文本消息
ZIMTextMessage messageObj; // 从 queryHistoryMessage 接口获取
zim.pinMessage(messageObj, true, new ZIMMessagePinnedCallback() {
@Override
public void onMessagePinned(ZIMError errorInfo) {
// 从这里获知置顶消息的操作是否成功
}
});
zim.queryPinnedMessageList(conversationID, conversationType, new ZIMPinnedMessageListQueriedCallback() {
@Override
public void onPinnedMessageListQueried(ArrayList<ZIMMessage> messageList, ZIMError errorInfo) {
// 从此处获取置顶消息列表
}
})
消息置顶后可通过 ZIMMessagePinnedCallback 接口获取置顶操作的结果。 会话中存在置顶消息时,会话成员可以通过调用 queryPinnedMessageList 接口查询置顶消息,并通过 ZIMPinnedMessageListQueriedCallback 获取置顶消息列表。
注意:
- 消息置顶仅支持在单聊和群聊会话中调用。
- 每个会话仅支持支持最多十条消息。尝试置顶第十一条消息时,会自动将置顶时间最早的消息解除置顶。
- 重复置顶同一条消息会更新其置顶时间。
- ZIMMessage 消息对象中的 pinnedUserID 和 pinnedTime 仅在 ZIMPinnedMessageListQueriedCallback 和 onMessagePinStatusChanged 中返回
- 群聊消息置顶和取消置顶操作可通过后台配置是否触发群 Tips 消息推送(默认不触发推送)。配置开启推送后,当群聊会话内有消息被置顶或取消置顶时,群成员会收到消息置顶相关的 TIPS 消息。例如:“XXX置顶了一条消息”。
通过以上步骤即可实现消息置顶功能,此功能可用于将重要的消息固定在会话的顶部,方便会话成员快速查看。如有问题请联系我们👇

本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/im/63815.html