addMessageReaction
接口为一条消息添加一个 emoji,添加成功后,emoji 下就会存储当前操作用户。removeMessageReaction
接口删除已经添加的 emoji,删除成功后,emoji 下就不再存储当前操作用户。getMessageReactions
接口批量拉取多条消息的 emoji 列表,其中每个 emoji 都包含了当前使用者总人数以及前 N(默认 10)个使用者用户资料。getAllUserListOfMessageReaction
接口分页拉取消息 emoji 的全量使用者用户资料。onRecvMessageReactionsChanged
回调,感知 emoji 的使用者信息变更,该回调会携带 emoji 最新的使用者信息(包含使用者总人数以及前 N 个使用者用户资料)。属性 | 含义 | 说明 |
message | 消息对象 | 消息必须是发送成功的状态。 |
reactionID | 消息回应 ID | 在表情回应场景,reactionID 为表情 ID。 |
V2TIMManager.getMessageManager().addMessageReaction(message, "emoji", new V2TIMCallback() {@Overridepublic void onSuccess() {// add message reaction succ}@Overridepublic void onError(int code, String desc) {// add message reaction failed}});
[[V2TIMManager sharedInstance] addMessageReaction:message reactionID:@"emoji" succ:^{// add message reaction succ} fail:^(int code, NSString *desc) {// add message reaction failed}];
class Callback final : public V2TIMCallback {public:using SuccessCallback = std::function<void()>;using ErrorCallback = std::function<void(int, const V2TIMString &)>;Callback() = default;~Callback() override = default;void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {success_callback_ = std::move(success_callback);error_callback_ = std::move(error_callback);}void OnSuccess() override {if (success_callback_) {success_callback_();}}void OnError(int error_code, const V2TIMString &error_message) override {if (error_callback_) {error_callback_(error_code, error_message);}}private:SuccessCallback success_callback_;ErrorCallback error_callback_;};auto *callback = new Callback{};callback->SetCallback([=]() {// add message reaction succdelete callback;},[=](int error_code, const V2TIMString &error_message) {// add message reaction faileddelete callback;});V2TIMManager::GetInstance()->GetMessageManager()->AddMessageReaction(message, "emoji", callback);
属性 | 含义 | 说明 |
message | 消息对象 | 消息必须是发送成功的状态。 |
reactionID | 消息回应 ID | 在表情回应场景,reactionID 为表情 ID。 |
V2TIMManager.getMessageManager().removeMessageReaction(message, "emoji", new V2TIMCallback() {@Overridepublic void onSuccess() {// remove message reaction succ}@Overridepublic void onError(int code, String desc) {// remove message reaction failed}});
[[V2TIMManager sharedInstance] removeMessageReaction:message reactionID:@"emoji" succ:^{// remove message reaction succ} fail:^(int code, NSString *desc) {// remove message reaction failed}];
class Callback final : public V2TIMCallback {public:using SuccessCallback = std::function<void()>;using ErrorCallback = std::function<void(int, const V2TIMString &)>;Callback() = default;~Callback() override = default;void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {success_callback_ = std::move(success_callback);error_callback_ = std::move(error_callback);}void OnSuccess() override {if (success_callback_) {success_callback_();}}void OnError(int error_code, const V2TIMString &error_message) override {if (error_callback_) {error_callback_(error_code, error_message);}}private:SuccessCallback success_callback_;ErrorCallback error_callback_;};auto *callback = new Callback{};callback->SetCallback([=]() {// remove message reaction succdelete callback;},[=](int error_code, const V2TIMString &error_message) {// remove message reaction faileddelete callback;});V2TIMManager::GetInstance()->GetMessageManager()->RemoveMessageReaction(message, "emoji", callback);
属性 | 含义 | 说明 |
messageList | 消息列表 | 消息必须属于同一个会话,消息必须是发送成功的状态。 |
maxUserCountPerReaction | 每个 Reaction 返回的最大用户资料数量 | 取值范围【0,10】,每个 Reaction 最多只返回前 10 个用户资料,如需更多用户资料, 可以按需调用 getAllUserListOfMessageReaction 接口分页拉取。 |
V2TIMMessageReactionResult
对象详解如下:属性 | 含义 | 说明 |
resultCode | 返回码 | 0:表示成功。 非0:表示失败。 |
resultInfo | 返回信息 | 错误信息。 |
msgID | 消息 ID | 消息唯一 ID。 |
reactionList | 消息回应列表 | 消息回应 V2TIMMessageReaction 对象列表。 |
V2TIMMessageReaction
对象详解如下:属性 | 含义 | 说明 |
reactionID | 消息回应 ID | 在表情回应场景,reactionID 为表情 ID。 |
totalUserCount | 总的用户个数 | 使用同一个 reactionID 回应消息的总的用户个数。 |
partialUserList | 部分用户列表 | 使用同一个 reactionID 回应消息的部分用户列表,用户列表数量取决于调用 getMessageReactions 接口时设置的 maxUserCountPerReaction 值。 |
reactedByMyself | 自己是否使用了该 reaction | 如果自己使用了该 reaction,该字段会返回 true。 |
V2TIMManager.getMessageManager().getMessageReactions(msgList, 5,new V2TIMValueCallback<List<V2TIMMessageReactionResult>>() {@Overridepublic void onSuccess(List<V2TIMMessageReactionResult> v2TIMMessageReactionResults) {// get message reactions succfor (V2TIMMessageReactionResult reactionResult : v2TIMMessageReactionResults) {int resultCode = reactionResult.getResultCode();String resultInfo = reactionResult.getResultInfo();List<V2TIMMessageReaction> reactionList = reactionResult.getReactionList();for (V2TIMMessageReaction reaction : reactionList) {String reactionID = reaction.getReactionID();int totalUserCount = reaction.getTotalUserCount();List<V2TIMUserInfo> partialUserList = reaction.getPartialUserList();}}}@Overridepublic void onError(int code, String desc) {// get message reactions failed}});
[[V2TIMManager sharedInstance] getMessageReactions:msgList maxUserCountPerReaction:5succ:^(NSArray<V2TIMMessageReactionResult *> *resultList) {// get message reactions succfor (V2TIMMessageReactionResult *result in resultList) {int32_t resultCode = result.resultCode;NSString *resultInfo = result.resultInfo;NSArray *reactionList = result.reactionList;for (V2TIMMessageReaction *reaction in reactionList) {NSString *reactionID = reaction.reactionID;uint32_t totalUserCount = reaction.totalUserCount;NSArray *partialUserList = reaction.partialUserList;}}} fail:^(int code, NSString *desc) {// get message reactions failed}];
template <class T>class ValueCallback final : public V2TIMValueCallback<T> {public:using SuccessCallback = std::function<void(const T &)>;using ErrorCallback = std::function<void(int, const V2TIMString &)>;ValueCallback() = defalt;~ValueCallback() override = default;void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {success_callback_ = std::move(success_callback);error_callback_ = std::move(error_callback);}void OnSuccess(const T &value) override {if (success_callback_) {success_callback_(value);}}void OnError(int error_code, const V2TIMString &error_message) override {if (error_callback_) {error_callback_(error_code, error_message);}}private:SuccessCallback success_callback_;ErrorCallback error_callback_;};auto *callback = new ValueCallback<V2TIMMessageReactionResultVector>{};callback->SetCallback([=](const V2TIMMessageReactionResultVector &messageReactionResultList) {// get message reactions succdelete callback;},[=](int error_code, const V2TIMString &error_message) {// get message reactions faileddelete callback;});V2TIMMessageVector message_list;message_list.PushBack(message);V2TIMManager::GetInstance()->GetMessageManager()->GetMessageReactions(message_list, 5, callback);
属性 | 含义 | 说明 |
message | 消息对象 | 消息必须是发送成功的状态。 |
reactionID | 消息回应 ID | 在表情回应场景,reactionID 为表情 ID。 |
nextSeq | 分页拉取的游标 | 第一次传 0,后续分页传 succ 返回的 nextSeq。 |
count | 一次分页最大拉取个数 | 最大支持 100 个 |
int nextSeq = 0;int count = 100;V2TIMManager.getMessageManager().getAllUserListOfMessageReaction(message, "emoji", nextSeq, count,new V2TIMValueCallback<V2TIMMessageReactionUserResult>() {@Overridepublic void onSuccess(V2TIMMessageReactionUserResult v2TIMMessageReactionUserResult) {// get all user list of message reaction succ// nextSeq:next pull sequence}@Overridepublic void onError(int code, String desc) {// get all user list of message reaction failed}});
uint32_t nextSeq = 0;uint32_t count = 100;[[V2TIMManager sharedInstance] getAllUserListOfMessageReaction:message reactionID:@"emoji" nextSeq:nextSeq count:countsucc:^(NSArray<V2TIMUserInfo *> *userList, uint32_t nextSeq, BOOL isFinished) {// get all user list of message reaction succ// nextSeq:next pull sequence} fail:^(int code, NSString *desc) {// get all user list of message reaction failed}];
template <class T>class ValueCallback final : public V2TIMValueCallback<T> {public:using SuccessCallback = std::function<void(const T &)>;using ErrorCallback = std::function<void(int, const V2TIMString &)>;ValueCallback() = defalt;~ValueCallback() override = default;void SetCallback(SuccessCallback success_callback, ErrorCallback error_callback) {success_callback_ = std::move(success_callback);error_callback_ = std::move(error_callback);}void OnSuccess(const T &value) override {if (success_callback_) {success_callback_(value);}}void OnError(int error_code, const V2TIMString &error_message) override {if (error_callback_) {error_callback_(error_code, error_message);}}private:SuccessCallback success_callback_;ErrorCallback error_callback_;};auto *callback = new ValueCallback<V2TIMMessageReactionUserResult>{};callback->SetCallback([=](const V2TIMMessageReactionUserResult &messageReactionUserResult) {// get all user list of message reaction succdelete callback;},[=](int error_code, const V2TIMString &error_message) {// get all user list of message reaction faileddelete callback;});V2TIMManager::GetInstance()->GetMessageManager()->GetAllUserListOfMessageReaction(message, "emoji", 0, 100, callback);
addAdvancedMsgListener
添加了高级消息事件监听器,当消息回应信息发生了更新,您会收onRecvMessageReactionsChanged
(Android / iOS & Mac / Windows) 回调。totalUserCount
字段值为0时,表明该 Reaction 已经没有用户在使用,您可以在 UI 上移除该 Reaction 的展示。V2TIMManager.getMessageManager().addAdvancedMsgListener(new V2TIMAdvancedMsgListener() {@Overridepublic void onRecvMessageReactionsChanged(List<V2TIMMessageReactionChangeInfo> changeInfos) {// receive message reactions changed notifyString msgID = changeInfo.getMessageID();// changed reaction listList<V2TIMMessageReaction> reactionList = changeInfo.getReactionList();}});
[[V2TIMManager sharedInstance] addAdvancedMsgListener:self];- (void)onRecvMessageReactionsChanged:(NSArray<V2TIMMessageReactionChangeInfo *> *)changeList {// receive message reactions changed notifyfor (V2TIMMessageReactionChangeInfo *changeInfo in changeList) {NSString *msgID = changeInfo.msgID;// changed reaction listNSArray *reactionList = changeInfo.reactionList;}}
V2TIMManager::GetInstance()->GetMessageManager()->AddAdvancedMsgListener(this);void OnRecvMessageReactionsChanged(const V2TIMMessageReactionChangeInfoVector &changeInfos) override {// receive message reactions changed notifyfor (size_t i = 0; i < changeInfos.Size(); i++) {V2TIMMessageReactionChangeInfo reactionChangeInfo = changeInfos[i];V2TIMString msgID = reactionChangeInfo.msgID;// changed reaction listV2TIMMessageReactionVector reactionList = reactionChangeInfo.reactionList;}}
本页内容是否解决了您的问题?