跳到主要内容

接收消息

设置消息监听

提示
  1. 设置消息接收监听器。所有接收到的消息都会在此接口方法中回调。
  2. 建议在应用生命周期内注册消息监听。
  3. 不支持设置多个监听器。为了避免内存泄露,请在不需要监听的时候将监听器置空。

方法

TypeScript
setOnMessageReceivedListener(listener?: (message: RCIMIWMessage, left: number, offline: boolean, hasPackage: boolean) => void): void;

参数说明

参数名参数类型描述
messageRCIMIWMessage接收到的消息对象
leftnumber当客户端连接成功后,服务端会将所有补偿消息以消息包的形式下发给客户端,最多每 200 条消息为一个消息包,即一个 Package, 客户端接受到消息包后,会逐条解析并通知应用。left 为当前消息包(Package)里还剩余的消息条数
offlineboolean消息是否离线消息
hasPackageboolean是否在服务端还存在未下发的消息包

代码示例

TypeScript

engine?.setOnMessageReceivedListener((message: RCIMIWMessage, left: number, offline: boolean, hasPackage: boolean) => {
//...
});

修改消息接收状态信息

修改本地消息的接收状态,可分别设置已读、已听、已下载和已收取状态。

方法

TypeScript
changeMessageReceiveStatusInfo(
messageId: number,
receivedStatusInfo: RCIMIWReceivedStatusInfo,
callback?: IRCIMIWChangeMessageReceivedStatusInfoCallback
): Promise<number>;

参数说明

参数名参数类型描述
messageIdnumber消息的本地 messageId,可从消息对象中获取
receivedStatusInfoRCIMIWReceivedStatusInfo要修改的消息接收状态。可同时设置 readlisteneddownloadedretrieved
callbackIRCIMIWChangeMessageReceivedStatusInfoCallback修改结果回调

返回值

返回值描述
number当次接口操作的状态码。0 代表调用成功,非 0 代表调用失败

代码示例

TypeScript
const code = await engine.changeMessageReceiveStatusInfo(
messageId,
{
read: true,
listened: false,
downloaded: true,
retrieved: false,
},
{
onMessageReceiveStatusInfoChanged: (errorCode: number) => {
//...
},
},
);

注意事项

  • 接收消息注意:

    1. 针对接收离线消息时,服务端会将 200 条消息打成一个包发到客户端,客户端对这包数据进行解析。

    2. hasPackage 标识是否还有剩余的消息包,left 标识这包消息解析完逐条抛送给 App 层后,剩余多少条。

  • 如何判断离线消息收完:

    1. hasPackage 为 false 和 left 为 0。

    2. hasPackage 为 false 标识当前正在接收最后一包(200条)消息,left 为 0 标识最后一包的最后一条消息也已接收完毕。