如何获取Mesibo消息回复对象名称?单聊正常群聊仍存问题
解决Mesibo群聊回复消息时显示自身名称的问题
区分单聊与群聊的回复逻辑
群聊场景下,repliedToMessage的peer指向的是群ID而非单个用户,直接复用单聊的名称获取逻辑会导致取到当前用户在群内的名称。必须单独处理群聊场景,从回复消息的实际发送者ID入手获取名称。群聊场景下的正确名称获取步骤
- 从回复消息对象
repliedToMessage中提取senderId(这条消息的实际发送者用户ID)。 - 通过Mesibo的
getUserProfile接口,传入senderId获取该用户的真实名称;如果有本地缓存的群成员列表,也可以直接从缓存中匹配senderId对应的名称。 - 避免使用当前会话的
peerName(群聊里peerName是群名称,或错误关联到当前用户)。
- 从回复消息对象
代码示例
// 假设已获取到回复消息实例repliedMsg,以及当前会话是否为群聊的标识isGroup String replyTargetName; if (isGroup) { // 群聊:通过senderId获取实际发送者的名称 Mesibo.UserProfile senderProfile = Mesibo.getUserProfile(repliedMsg.getSenderId()); replyTargetName = senderProfile != null ? senderProfile.getName() : "匿名用户"; } else { // 单聊:使用修复后的原有逻辑 replyTargetName = repliedMsg.getPeerName(); } // 将replyTargetName赋值给回复UI的名称展示控件额外排查点
如果调用getUserProfile返回的名称仍不正确,检查本地群成员缓存是否过期,可调用Mesibo.refreshGroupMembers(groupId)主动拉取最新的群成员数据后再尝试获取名称。
内容的提问来源于stack exchange,提问作者Eko Yulianto
相关产品推荐
相关产品推荐

