当前知识库站点已不再维护。请移步新版知识库:https://help.rongcloud.cn/

怎么修改内置消息的推送显示

收到内置消息(如图片消息,语音消息等)的推送时,怎么修改通知栏的显示内容,即怎么改变pushContent的内容?比如在收到语音消息时,通知栏显示为“语音”,怎么改为“[voice]" ?
发布时间: 2016-09-20 14:25

回答:

  1. 设置发送消息监听器

```

IMCenter.getInstance().setMessageInterceptor()

```

2. 可以参考下面代码:

```

private void initInterceptor() {

        IMCenter.getInstance()

                .setMessageInterceptor(

                        new MessageInterceptor() {

                            @Override

                            public boolean interceptReceivedMessage(

                                    Message message,

                                    int left,

                                    boolean hasPackage,

                                    boolean offline) {

                                return false;

                            }


                            @Override

                            public boolean interceptOnSendMessage(Message message) {

                                MessageContent messageContent = message.getContent();

                                String language = mContext.getResources().getConfiguration().locale.getLanguage();

                                if (language.endsWith("en")) {   // 手机系统语言为英文

                                    if (messageContent instanceof VoiceMessage) {

                                        MessagePushConfig messagePushConfig = message.getMessagePushConfig();

                                        if (messagePushConfig == null){

                                            messagePushConfig = new MessagePushConfig();

                                            message.setMessagePushConfig(messagePushConfig);

                                        }

                                        messagePushConfig.setPushContent("[voice]");// 语音消息时推送显示为 "[voice]"

                                    }

                                }

                                return false;

                            }


                            @Override

                            public boolean interceptOnSentMessage(Message message) {

                                if (message != null) {

                                    message.setMessageConfig(null);

                                }

                                return false;

                            }


                            @Override

                            public boolean interceptOnInsertOutgoingMessage(

                                    Conversation.ConversationType type,

                                    String targetId,

                                    Message.SentStatus sentStatus,

                                    MessageContent content,

                                    long time) {

                                return false;

                            }


                            @Override

                            public boolean interceptOnInsertIncomingMessage(

                                    Conversation.ConversationType type,

                                    String targetId,

                                    String senderId,

                                    Message.ReceivedStatus receivedStatus,

                                    MessageContent content,

                                    long time) {

                                return false;

                            }

                        });

    }

```