跳到主要内容

接收消息

开发者拦截 SDK 接收的消息,并进行相应的业务操作。

消息接收监听器说明

SDK 提供了消息接收监听器 MessageReceivedListener,可接收实时消息或离线消息。

接收消息

当客户端连接成功后,服务端会将所有离线消息?以消息包(Package)的形式下发给客户端,每个 Package 中最多含 200 条消息。客户端会解析 Package 中的消息,逐条上抛并通知应用。

SDK 接收到消息时会触发以下方法。

onMessageReceived(message: Message, info: ReceivedInfo): void

参数说明

参数类型说明
messageMessage接收的消息
infoReceivedInfo消息接收信息

ReceivedInfo 说明

参数类型说明
leftnumber还剩余的未接收的消息数
hasPackagebooleanSDK 拉取服务器的消息以包(package)的形式批量拉取,有 package 存在就意味着远端服务器还有消息尚未被 SDK 拉取
isOfflineboolean是否是离线消息

同时满足以下条件,表示离线消息已收取完毕:

  • hasPackagefalse:表示当前正在解析最后一包消息。
  • left 为 0:表示最后一个消息包中最后一条消息已接收完毕。

消息收取完毕

每次连接成功后,离线消息收取完毕时会触发以下回调方法。如果没有离线消息,连接成功后会立即触发。

onOfflineMessageSyncCompleted(): void

设置/移除消息接收监听器

IMKit SDK 提供了 addMessageReceiveListener / removeMessageReceiveListener 方法,支持设置多个消息接收监听器。

建议在应用生命周期内注册消息监听。请注意不要重复添加,避免内存泄露。如果在页面中监听,建议在 aboutToAppear 调用,在 aboutToDisappear 移除监听。

添加消息监听器

SDK 支持添加监听器。所有接收到的消息都会在此接口方法中回调。

RongIM.getInstance().messageService().addMessageReceiveListener()

移除消息监听器

SDK 支持移除监听器。为了避免内存泄露,请在不需要监听时将监听器移除。

RongIM.getInstance().messageService().removeMessageReceiveListener()