自定义消息,服务端更新消息不能保存

dong 10天前 124

服务端更新消息能体现,但是再发一条消息或者退出聊天界面再次进入又变成原本的内容。求帮助 自定消息代码如下: 收到服务端消息的时候 decode中binaryContent数据是想要的。

export default class BuyVehicleRequestMessageContent extends MessageContent {
    content;
    orderInfo;

    constructor(content, extra, mentionedType = 0, mentionedTargets = []) {
        super(MessageContentType.MESSAGE_CONTENT_TYPE_BUYVEHICLE_REQUEST, mentionedType, mentionedTargets);
        this.content = content;
        this.orderInfo = extra
    }

    digest() {
        return "[定车申请]";
    }

    encode() {
        let payload = super.encode();
        payload.searchableContent = this.content;
        payload.binaryContent = wfc.utf8_to_b64(JSON.stringify(this.orderInfo));
        return payload;
    }

    decode(payload) {
        super.decode(payload);
        console.log("开始:decode")
        this.content = payload.content;
        this.searchableContent = payload.searchableContent
        if (payload.binaryContent && payload.binaryContent.length > 0) {
            // JSON.parse 和 JSON.stringify 不能处理java long
            payload.extra =JSON.parse(wfc.b64_to_utf8(payload.binaryContent))
            console.log("orderState:"+payload.extra.orderState)
            this.binaryContent = payload.binaryContent
            this.extra = payload.extra
        }
    }
}
最新回复 (7)
  • dong 10天前
    引用 2
    补充:项目重新运行进入聊天界面,内容也是正确的
  • dong 10天前
    引用 3
     wfc.getMessagesV2(this.conversation, 0, true, 20, '', messages => {
          if (messages.length < 20) {
            this.loadOldMessages();
            if (messages.length === 0) {
              return;
            }
          }

          let uiMsgs = this.messagesToUiMessages(messages);
          this.setData({
            chatItems: uiMsgs,
            scrollTopVal: uiMsgs.length * 999
          });
        }  服务费更新后,在客户端重新发一条信息后,messages 对应的那条消息数据是服务端更新之前的内容
  • x86 10天前
    引用 4
    你说的服务端更新消息,具体是通过什么 api 怎么做的?
  • dong 10天前
    引用 5
    x86 你说的服务端更新消息,具体是通过什么 api 怎么做的?
    MessagePayload payload = new MessagePayload();
                payload.setType(msgType);
                payload.setSearchableContent(text);
                payload.setBase64edData(Base64Utils.encodeToString(data.toString().getBytes()));
                payload.setPersistFlag(ProtoConstants.PersistFlag.Persist_And_Count);

                IMResult<Void> imResult = MessageAdmin.updateMessageContent("admin", messageId, payload, true);
  • x86 10天前
    引用 6
    请你到这儿 https://github.com/wildfirechat/uni-chat 提个 issue 追踪下

    问题可能是ui 层缓存的消息列表里面,未对消息对应消息进行更新导致的
  • x86 9天前
    引用 7
    你好,这个问题在 2023-05-06 之后的小程序 SDK上,应当修复了的,请确认
  • x86 7天前
    引用 8
    更新

    最后确认是自定义消息实现错误,encode 和 decode 方法需要对应起来
返回