微信小程序接入腾讯云IM即时通讯(会话列表之未读消息,显示最新一条消息开发步骤)

微信小程序接入腾讯云IM即时通讯(会话列表之未读消息,显示最新一条消息开发步骤)

1.未读消息思路

首先,获取未读消息第一步就是要先能接收到对方发送的信息,也就是要在官方api中给的监听新消息事件做处理。先看下图需要做的功能点

在这里插入图片描述

  1. 接收到对方发过来的新消息之后获取消息的未读计数;
    在这里插入图片描述

js代码

1.先获取未读的消息计数,获取会话列表最新的一条消息

//获取消息未读数并更新到会话列表
function getUnread(){
  var sess= {};
  var sessMap = webim.MsgStore.sessMap();
  if (that.data.contactList) {//这里判断是否存在会话列表,或者在会话列表的页面
    // 更新消息的未读数
    for (var i in sessMap) {
      sess = sessMap[i];
      var contactList = that.data.contactList.map((item, index) => {
        if (item.To_Account == sess.id()) {
          item.UnreadMsgCount = sess.unread()
        }
        return item;
      })
      //先把未读数赋值
      that.setData({
        contactList: contactList
      })
        // 获取最新的会话消息(把最新的一条赋值到会话列表)
        webim.getRecentContactList({
          'Count': 10 //最近的会话数 ,最大为 100
        }, function (resp) {
          var MsgShow = resp.SessionItem.filter((item, index) => {
            if (item.To_Account == sess.id()) return item;
          })
         
          var contactList = that.data.contactList.map((item, index) => {
            if (item.To_Account == sess.id()) {
              // 获取最新消息
              if (MsgShow[0].MsgShow == '[其他]'){
                MsgShow[0].MsgShow = '[房源信息]'
              }
              item.MsgShow = MsgShow[0].MsgShow
              
            }
            return item;
          })
          
          that.setData({
            contactList: contactList
          })

        })

      }
  }
}

2.在接收到新消息事件中调用这个方法getUnread()这个方法

//获取消息未读数并更新到会话列表
//监听新消息(私聊(包括普通消息、全员推送消息),普通群(非直播聊天室)消息)事件
//newMsgList 为新消息数组,结构为[Msg]
function onMsgNotify(newMsgList) {
    var newMsg;
    //获取所有聊天会话
 
    for (var j in newMsgList) {//遍历新消息
        newMsg = newMsgList[j];
        
        if (newMsg.getSession().id() == id) {//为当前聊天对象的消息
            selSess = newMsg.getSession();
            handlderMsg(newMsg, false);
            currentMsgsArray = currentMsgsArray.map((item, index) => {
              if (!item.isSelfSend) {
                item.avatar = myAvatar
              } else {
                item.avatar = friendAvatar
              }
              return item;
            })
            var myMessages = that.setDatas(currentMsgsArray);
            that.setData({
              myMessages: myMessages,

            })
            setTimeout(function () {
              if (that.data.is_chat){
                that.pageScrollToBottom()
              }
            }, 100)
          
        }
    }
    getUnread()
    
}
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值