表情符号被广泛用于实时聊天,允许用户以直接和生动的方式表达自己的感受。在即时通讯 IM 中,消息表情回复(下文统称 “Reaction”)允许用户在单聊和群聊中使用表情符号对消息进行快速回复。在群聊中,Reaction 也可用于投票,例如,计算对消息回复的各种表情符号的数量确认投票。
下图展示如何将 Reaction 添加到消息、添加了 Reaction 的会话以及获取 Reaction 列表(带有相关信息)。
本页介绍如何使用即时通讯 IM SDK 在项目中实现 Reaction 功能。
即时通讯 IM SDK 支持你通过调用方法实现如下功能:
ChatMessage
对象中获取 Reaction 列表。开始前,请确保满足以下条件:
每个版本的套餐包都支持 Reaction 功能,因此在声网控制台中启用即时通讯 IM 会默认开启 Reaction 功能。
调用 asyncAddReaction
方法在消息上添加 Reaction,在 onReactionChanged
监听事件中会收到该消息的最新 Reaction 概览。
示例代码如下:
// 添加 Reaction。
ChatClient.getInstance().chatManager().asyncAddReaction(message.getMsgId(), reaction, new CallBack() {
@Override
public void onSuccess() {
}
@Override
public void onError(int error, String errorMsg) {
}
@Override
public void onProgress(int i, String s) {
}
});
// 监听 Reaction 更新。
public class MyClass implements MessageListener {
private void init() {
ChatClient.getInstance().chatManager().addMessageListener(this);
}
@Override
public void onReactionChanged(List<MessageReactionChange> list) {
}
}
调用 asyncRemoveReaction
删除指定消息的 Reaction,在 onReactionChanged
监听事件中会收到该消息的最新 Reaction 概览。
示例代码如下:
// 删除 Reaction。
ChatClient.getInstance().chatManager().asyncRemoveReaction(message.getMsgId(), reaction, new CallBack() {
@Override
public void onSuccess() {
}
@Override
public void onError(int error, String errorMsg) {
}
@Override
public void onProgress(int i, String s) {
}
});
// 监听 Reaction 更新。
public class MyClass implements MessageListener {
private void init() {
ChatClient.getInstance().chatManager().addMessageListener(this);
}
@Override
public void onReactionChanged(List<MessageReactionChange> list) {
}
}
调用 asyncGetReactionList
可以从服务器获取指定消息的 Reaction 概览列表,列表内容包含 Reaction 内容,添加或移除 Reaction 的用户数量,以及添加或移除 Reaction 的前三个用户的用户 ID。示例代码如下:
ChatClient.getInstance().chatManager().asyncGetReactionList(msgIdList, ChatMessage.ChatType.Chat, groupId, new ValueCallBack<Map<String, List<MessageReaction>>>() {
@Override
public void onSuccess(Map<String, List<MessageReaction>> stringListMap) {
}
@Override
public void onError(int i, String s) {
}
});
调用 asyncGetReactionDetail
可以从服务器获取指定 Reaction 的详情,包括 Reaction 内容,添加或移除 Reaction 的用户数量以及添加或移除 Reaction 的全部用户列表。示例代码如下:
ChatClient.getInstance().chatManager().asyncGetReactionDetail(mMsgId, emojiconId, pageCursor, 30, new ValueCallBack<CursorResult<MessageReaction>>() {
@Override
public void onSuccess(CursorResult<MessageReaction> messageReactionCursorResult) {
}
@Override
public void onError(int i, String s) {
}
});
即时通讯 IM UIKit 也支持 Reaction 功能,其中包含更丰富的表情符号。你可以使用 UIKit 在项目中实现 Reaction 功能。