当消息到达时,客户端SDK不仅会将消息本身传递给业务端,还会触发相应的回调机制,以便业务能够即时接收到并处理该消息。
如何监听消息请参见监听消息。
客户端发送消息
在用户通过客户端登录的过程中,系统将自动获取并配置好用于后续消息发送操作的发送者信息。userId
和userExtension
会作为发送者的信息,包含在接收端的ImMessage
中。
ImLoginReq req = new ImLoginReq();
req.user.userId = userId;
//透传业务额外信息
Map<String, Object> data = new HashMap<>();
data.put("level", "high");
req.user.userExtension = App.getGson().toJson(data).toString();
req.userAuth = new ImAuth(nonce, timestamp, role, app_token);
AliVCIMEngine.instance().login(req, new ImSdkCallback());
服务端发送消息
SendLiveMessageGroup - 发送消息到群组和SendLiveMessageUser - 发送消息给指定用户 接口,都包括以下发送者信息。
名称 | 类型 | 必填 | 描述 | 示例值 |
名称 | 类型 | 必填 | 描述 | 示例值 |
SenderId | string | 是 | 发送消息的用户 ID,由大小写字母、数字组成,长度不超过 64 字节。 | uid1 |
SenderInfo | string | 否 | 发送消息为用户的扩展信息,长度不超过 512 字节。 | uid1meta1 |
SenderId
和SenderInfo
两个字段会被包含在接收端收到的ImMessage
中。
为了确保信息的一致性和简化解析逻辑,建议将
SenderInfo
的定义与客户端登录时使用的userExtension
格式相同。对于由服务端发起的消息(无论是模拟用户行为还是发送系统通知),虽然不会对
SenderId
进行有效性检查,并且不要求该ID必须属于某个特定群组内的成员,但仍然推荐合理设置这些参数以增强消息的真实感和可靠性。
该文章对您有帮助吗?