如何修改文本消息TextMessage的搜索逻辑

1,继承TextMessage自定义MockTextMessage


大致模版如下

import android.os.Parcel;
import android.text.TextUtils;

import java.util.ArrayList;
import java.util.List;

import io.rong.imlib.MessageTag;
import io.rong.message.TextMessage;
        @MessageTag(value = "RC:TxtMsg", flag = MessageTag.ISCOUNTED)
        public class MockTextMessage extends TextMessage {
            protected MockTextMessage() {
            }
            public static TextMessage obtain(String text) {
                return new MockTextMessage(text);
            }
            public MockTextMessage(String content) {
                super(content);
            }
            public MockTextMessage(byte[] data) {
                super(data);
            }
            public MockTextMessage(Parcel in) {
                super(in);
            }
            public static final Creator<MockTextMessage> CREATOR =
                    new Creator<MockTextMessage>() {

                        @Override
                        public MockTextMessage createFromParcel(Parcel source) {
                            return new MockTextMessage(source);
                        }

                        @Override
                        public MockTextMessage[] newArray(int size) {
                            return new MockTextMessage[size];
                        }
                    };

            @Override
            public List<String> getSearchableWord() {
                List<String> words = new ArrayList<>();
                String content = getContent();
                // 假设使用processContent方法处理content
                String contentProcessed = processContent(content);
                words.add(contentProcessed);
                return words;
            }
        }

2,注册MockTextMessage消息

RongIMClient.registerMessageType(messageContentClassList);

文档见:https://doc.rongcloud.cn/im/Android/5.X/noui/message/customize#%E6%B3%A8%E5%86%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E6%B6%88%E6%81%AF

3,修改消息发送逻辑

a,修改源码方式

源码方式依赖,在Kit源码中声明MockTextMessage,在RongExtensionViewModel#onSendClick()中,修改TextMessage为MockTextMessage

b,非源码依赖Kit或不想修改Kit源码方式

调用RongExtensionManager.getInstance().addExtensionEventWatcher全局设置接口,onSendToggleClick接口方法是点击前的回调,在这里替换TextMessage。