最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 融云 Web SDK 删除历史消息

    正文概述 掘金(wffff)   2020-12-24   459

    融云 Web SDK 删除历史消息

    前提: 已通过融云 SDK 实现单群聊聊天功能

    需求: 在现有基础上, 完成删除历史消息的功能

    先按照需求梳理需要完成的步骤:

    1、根据融云文档删除历史消息

    2、调用删除历史消息接口成功后. 界面同样做删除/跳转的渲染

    3、调用获取会话列表界面

    4、根据最新会话列表数据重新渲染会话列表

    根据融云文档, 可知会话列表和历史消息的关系如下:

    docs.rongcloud.cn/v4/views/im…

    删除历史消息

    根据融云文档, 发现融云包含两种删除消息方法, 分别为: 按消息 Id 删除、按时间戳删除

    按消息 Id 删除:

    根据文档可知, 按消息 Id 删除其实就是传入单个 或 多个消息 messageUId, 删除传入的消息

    适用场景: 1、右键删除单个消息 2、批量删除会话内消息

    var conversation = im.Conversation.get({
      targetId: '接收方的 userId',
      type: RongIMLib.CONVERSATION_TYPE.PRIVATE
    });
    conversation.deleteMessages([
      { messageUId: '2jJ9-KU1j-OLJG-29KL', sentTime: 1580869079801, messageDirection: 1 },
      { messageUId: '8UJ9-JU9j-WSJG-92K0', sentTime: 1580869078886, messageDirection: 1 }
    ]).then(function(){
      console.log('删除历史消息成功');
    });
    

    按时间戳删除:

    按时间戳删除即为传入时间戳, 将会删除此时间之前的所有消息

    适用场景: 1、清空某会话所有消息 2、清除某会话某时间之前所有消息

    var conversation = im.Conversation.get({
      targetId: '接收方的 userId',
      type: RongIMLib.CONVERSATION_TYPE.PRIVATE
    });
    conversation.clearMessages({
      timestrap: +new Date()
    }).then(function(){
      console.log('清除历史消息成功');
    });
    

    综上, 本公司要求删除会话所有消息, 所以按时间戳删除更符合本公司产品逻辑

    此处遇到两个问题:

    1、按照时间戳删除会话的历史消息后. 刷新会话列表, 发现会话列表中依然包含刚刚清空消息的会话

    2、删除时传入了当前时间, 结果却返回了 33007 (解释为未开通历史消息服务, 但开发者后台却早已开通)

    于是到融云官网提出工单, 得到了这两个问题的解决方案. 以下依次说明

    删除会话列表

    针对问题: 按照时间戳删除会话的历史消息后. 刷新会话列表, 发现会话列表中依然包含刚刚清空消息的会话

    工单解释: 清空历史消息, 并不会删除会话. 因为某些客户是需要清空消息但保留会话的. 如果需要清空后同时删除会话, 需要再调用删除会话接口

    于是根据文档调用删除会话, 再次重新获取会话列表数据, 问题已经解决了

    删除会话文档: docs.rongcloud.cn/v4/views/im…

    // conversation 会话实例
    var conversation = im.Conversation.get({
      targetId: '接收方的 userId',
      type: RongIMLib.CONVERSATION_TYPE.PRIVATE
    });
    conversation.destory().then(function(){
      console.log('删除会话成功');
    });
    

    删除历史消息时间参数

    针对问题: 删除时传入了当前时间, 结果却返回了 33007 (解释为未开通历史消息服务, 但开发者后台却早已开通)

    工单回复: 因传入了比融云服务器时间还要大的时间, 所以服务返回了此错误码. 如果要保证删除成功, 建议传入会话最后一条消息的 sentTime (发送时间)

    这次解释比较牵强, 每个人本地时间都是不同的, 此问题应该融云服务端去解决才合理

    但是为了解决项目需求, 还是采用融云提供的方法解决了此问题

    var conversation = im.Conversation.get({
      targetId: '接收方的 userId',
      type: RongIMLib.CONVERSATION_TYPE.PRIVATE
    });
    var time = latestMessage.sentTime; // 此处时间戳传入当前会话的最后一条消息的 发送时间
    conversation.clearMessages({
      timestrap: time
    }).then(function(){
      console.log('清除历史消息成功');
    });
    

    起源地下载网 » 融云 Web SDK 删除历史消息

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元