接收消息
开发者拦截 SDK 接收的消息,并进行相应的业务操作。
消息接收监听器说明
SDK 提供了消息接收监听器 MessageReceivedListener
,可接收实时消息或离线消息。
接收消息
当客户端连接成功后,服务端会将所有离线消息?以消息包(Package)的形式下发给客户端,每个 Package 中最多含 200 条消息。客户端会解析 Package 中的消息,逐条上抛并通知应用。
SDK 接收到消息时会触发以下方法。
onMessageReceived(message: Message, info: ReceivedInfo): void
参数说明
参数 | 类型 | 说明 |
---|---|---|
message | Message | 接收的消息 |
info | ReceivedInfo | 消息接收信息 |
ReceivedInfo
说明
参数 | 类型 | 说明 |
---|---|---|
left | number | 还剩余的未接收的消息数 |
hasPackage | boolean | SDK 拉取服务器的消息以包(package)的形式批量拉取,有 package 存在就意味着远端服务器还有消息尚未被 SDK 拉取 |
isOffline | boolean | 是否是离线消息 |
同时满足以下条件,表示离线消息已收取完毕:
hasPackage
为false
:表示当前正在解析最后一包消息。left
为 0:表示最后一 个消息包中最后一条消息已接收完毕。
消息收取完毕
每次连接成功后,离线消息收取完毕时会触发以下回调方法。如果没有离线消息,连接成功后会立即触发。
onOfflineMessageSyncCompleted(): void
设置/移除消息接收监听器
IMKit SDK 提供了 addMessageReceiveListener
/ removeMessageReceiveListener
方法,支持设置多个消息接收监听器。
建议在应用生命周期内注册消息监听。请注意不要重复添加,避免内存泄露。如果在页面中监听,建议在 aboutToAppear
调用,在 aboutToDisappear
移除监听。
添加消息监听器
SDK 支持添加监听器。所有接收到的消息都会在此接口方法中回调。
RongIM.getInstance().messageService().addMessageReceiveListener()
移除消息监听器
SDK 支持移除监听器。为了避免内存泄露,请在不需要监听时将监听器移除。
RongIM.getInstance().messageService().removeMessageReceiveListener()