拦截消息

如何拦截消息
发布时间: 2018-11-06 15:39

回答:

定义 MessageInterceptor,使用 RongIM.setMessageInterceptor 进行注册。

MessageInterceptor 中返回 true 即为消费事件。

需要注意的是如果拦截并消费了信息,后续逻辑需要自己实现,如:通知,页面刷新等。

/**
 * 设置接收消息时的拦截器
 *
 * @param messageInterceptor 拦截器
 */
public void setMessageInterceptor(MessageInterceptor messageInterceptor)


/**
 * 接收消息的拦截器
 */
public interface MessageInterceptor {
    /**
     * 收到消息处理的回调
     *
     * @param message
     * @return true: 拦截, 不显示  false: 不拦截, 显示此消息。
     * 此处只处理实时收到消息时,在界面上是否显示此消息。
     * 在重新加载会话页面时,不受此处逻辑控制。
     * 若要永久不显示此消息,需要从数据库删除该消息,在回调处理中调用 {@link #deleteMessages(int[], RongIMClient.ResultCallback)},
     * 否则在重新加载会话时会将此消息重新加载出来。
     */
    boolean intercept(Message message);
}