接收消息
设置消息监听
提示
- 设置消息接收监听器。所有接收到的消息都会在此接口方法中回调。
- 建议在应用生命周期内注册消息监听。
- 不支持设置多个监听器。为了避免内存泄露,请在不需要监听的时候将监听器置空。
方法
TypeScript
setOnMessageReceivedListener(listener?: (message: RCIMIWMessage, left: number, offline: boolean, hasPackage: boolean) => void): void;
参数说明
| 参数名 | 参数类型 | 描述 |
|---|---|---|
message | RCIMIWMessage | 接收到的消息对象 |
left | number | 当客户端连接成功后,服务端会将所有补偿消息以消息包的形式下发给客户端,最多每 200 条消息为一个消息包,即一个 Package, 客户端接受到消息包后,会逐条解析并通知应用。left 为当前消息包(Package)里还剩余的消息条数 |
offline | boolean | 消息是否离线消息 |
hasPackage | boolean | 是否在服务端还存在未下发的消息包 |
代码示例
TypeScript
engine?.setOnMessageReceivedListener((message: RCIMIWMessage, left: number, offline: boolean, hasPackage: boolean) => {
//...
});
修改消息接收状态信息
修改本地消息的接收状态,可分别设置已读、已听、已下载和已收取状态。
方法
TypeScript
changeMessageReceiveStatusInfo(
messageId: number,
receivedStatusInfo: RCIMIWReceivedStatusInfo,
callback?: IRCIMIWChangeMessageReceivedStatusInfoCallback
): Promise<number>;
参数说明
| 参数名 | 参数类型 | 描述 |
|---|---|---|
messageId | number | 消息的本地 messageId,可从消息对象中获取 |
receivedStatusInfo | RCIMIWReceivedStatusInfo | 要修改的消息接收状态。可同时设置 read、listened、downloaded 和 retrieved |
callback | IRCIMIWChangeMessageReceivedStatusInfoCallback | 修改结果回调 |
返回值
| 返回值 | 描述 |
|---|---|
number | 当次接口操作的状态码。0 代表调用成功,非 0 代表调用失败 |
代码示例
TypeScript
const code = await engine.changeMessageReceiveStatusInfo(
messageId,
{
read: true,
listened: false,
downloaded: true,
retrieved: false,
},
{
onMessageReceiveStatusInfoChanged: (errorCode: number) => {
//...
},
},
);
注意事项
-
接收消息注意:
-
针对接收离线消息时,服务端会将 200 条消息打成一个包发到客户端,客户端对这包数据进行解析。
-
hasPackage标识是否还有剩余的消息包,left标识这包消息解析完逐条抛送给 App 层后,剩余多少条。
-
-
如何判断离线消息收完:
-
hasPackage为 false 和left为 0。 -
hasPackage为 false 标识当前正在接收最后一包(200条)消息,left为 0 标识最后一包的最后一条消息也已接收完毕。
-