当前位置: 首页 > wzjs >正文

建一个网站需要多少费用广州网络公司策划

建一个网站需要多少费用,广州网络公司策划,招商页面设计,安卓系统开发公司uniapp 实现腾讯云 IM 消息已读回执处理全攻略 一、功能实现原理 腾讯云 IM 的已读回执功能通过 消息已读上报机制 实现,核心流程如下: 接收方阅读消息时,客户端自动上报已读状态云端记录最新已读时间戳(精确到会话维度&#x…

uniapp 实现腾讯云 IM 消息已读回执处理全攻略

一、功能实现原理

腾讯云 IM 的已读回执功能通过 消息已读上报机制 实现,核心流程如下:

  1. 接收方阅读消息时,客户端自动上报已读状态
  2. 云端记录最新已读时间戳(精确到会话维度)
  3. 发送方通过监听事件获取接收方的已读状态
  4. 群聊场景支持显示已读成员列表(需开通高级功能)

二、核心实现步骤

1. 发送消息时启用已读回执

// 创建文本消息(启用已读回执)
export function createTextMessageWithReceipt(options) {const tim = initIM()return tim.createTextMessage({to: options.to,conversationType: options.type || 'C2C',payload: { text: options.content },cloudCustomData: JSON.stringify({needReadReceipt: true // 启用已读回执})})
}

2. 接收方自动上报已读

// 初始化时配置自动已读
tim = TIM.create({SDKAppID: config.SDKAppID
})// 进入会话时标记消息为已读
export async function markConversationRead(conversationID) {const tim = initIM()const conv = tim.getConversationProfile(conversationID)// 获取最后一条消息const lastMsg = conv.getLastMessage()if (!lastMsg) return// 上报已读到最新消息await tim.messageReportedRead({conversationID,lastMsgID: lastMsg.clientMsgID})
}

3. 监听已读回执通知

// 全局消息监听器
export function setupMessageListener(callback) {const tim = initIM()tim.on(tim.EVENT.MESSAGE_READ_BY_PEER, (event) => {const { data } = event// 更新本地消息状态data.forEach(receipt => {const conv = tim.getConversationProfile(receipt.conversationID)conv.setMessageRead(receipt.messageKey.clientMsgID)// 触发UI更新uni.$emit('message-read', {conversationID: receipt.conversationID,msgID: receipt.messageKey.clientMsgID,reader: receipt.reader})})})
}

4. 群聊已读成员处理

// 获取群聊已读成员列表
export async function getGroupReadMembers(groupID, msg) {const tim = initIM()try {const res = await tim.getGroupMessageReadMembersList({groupID,messageKey: tim.createMessageKey(msg.clientMsgID)})return res.data.readMemberList || []} catch (error) {console.error('获取已读成员失败:', error)return []}
}

三、关键问题处理

1. 性能优化策略

// 批量上报已读(防抖处理)
let readReportDebounce = nullexport function batchReportRead(conversationID, lastMsgID) {clearTimeout(readReportDebounce)readReportDebounce = setTimeout(async () => {try {await tim.messageReportedRead({conversationID,lastMsgID})} catch (error) {console.warn('批量上报失败:', error)}}, 500) // 500ms防抖
}

2. 隐私保护方案

// 用户隐私设置(示例)
const PRIVACY_CONFIG = {DISABLE_READ_RECEIPT: false // 用户是否关闭已读回执
}// 发送消息时动态判断
export function createMessage(options) {const tim = initIM()return tim.createTextMessage({...,cloudCustomData: JSON.stringify({needReadReceipt: !PRIVACY_CONFIG.DISABLE_READ_RECEIPT})})
}

3. 跨平台差异处理

// 微信小程序特殊处理
#ifdef MP-WEIXIN
// 修复小程序页面切换导致的已读上报延迟
Page({onHide() {const lastMsg = getCurrentPage().data.lastMsgif (lastMsg) batchReportRead(lastMsg.conversationID, lastMsg.clientMsgID)}
})
#endif

四、高级功能扩展

1. 已读状态可视化

<template><view class="message-item" :class="{ 'is-read': msg.isPeerRead }">{{ msg.payload.text }}<!-- 群聊已读状态 --><view v-if="isGroup && msg.isPeerRead" class="read-status">{{ readCount }}人已读</view></view>
</template><script>
export default {props: ['msg', 'isGroup'],computed: {readCount() {return this.msg.readCount || 0}}
}
</script>

2. 定时同步已读状态

// 定时任务配置(每5分钟同步)
setInterval(async () => {const tim = initIM()const convList = await tim.getConversationList()convList.forEach(conv => {const lastMsg = conv.getLastMessage()if (lastMsg && !lastMsg.isPeerRead) {tim.messageReportedRead({conversationID: conv.conversationID,lastMsgID: lastMsg.clientMsgID})}})
}, 5 * 60 * 1000)

3. 业务逻辑集成

// 客服场景:自动标记为已读
export function autoReadMessages(conversationID) {const tim = initIM()const conv = tim.getConversationProfile(conversationID)// 获取未读消息列表const unreadMsgs = conv.getUnreadMessageList()// 批量标记为已读unreadMsgs.forEach(msg => {conv.setMessageRead(msg.clientMsgID)})
}

五、常见问题排查

  1. Q: 已读回执未触发
    A: 检查消息的 cloudCustomData 是否包含 needReadReceipt: true,确认接收方版本 ≥ 2.18.0

  2. Q: 群聊已读人数不准确
    A: 需在控制台开通「群消息已读回执」增值服务,并确保使用最新版 SDK

  3. Q: 已读状态同步延迟
    A: 检查网络状况,已读回执默认使用长轮询,可升级到 WebSocket 连接

  4. Q: 消息漫游后状态丢失
    A: 确保消息漫游策略包含已读状态(需在控制台配置)

六、最佳实践建议

  1. 重要消息(如系统通知)强制启用已读回执
  2. 对长文本消息采用分片上报策略(每10条上报一次)
  3. 结合消息优先级实现差异化已读策略(如@消息优先处理)
  4. 在消息列表展示最近已读时间(使用TIM.TYPES.CONV_LAST_MSG

文章转载自:

http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://00000000.xgchm.cn
http://www.dtcms.com/wzjs/603909.html

相关文章:

  • 太原网站运营优化sun0769东莞阳光网
  • 家装效果图网站微信小程序开发制作教程
  • 简约大气网站设计欣赏家居网站建设基本流程
  • 美工素材网站莱芜在线论坛网
  • 富平做网站在线平面设计作图网站
  • 个人网站的制作论文做怎么样的自己的网站
  • 网站建设市场需求分析常见的网站布局结构
  • 网站建设的四个步骤如何建立网站会员系统
  • 广州网站建设团队刚刚做的网站怎么排名
  • 学外贸英语的网站重庆承越网站制作公司
  • 建设网站的目标客户群如何建设网站并与数据库相连
  • 深圳做网站google推广便宜的海外服务器
  • 甘肃省建设稽查执法局网站徐汇网站建设
  • 凡科主要是做什么的优化游戏的软件
  • 山东一建建设有限公司官方网站建筑网站免费
  • 贵州旅游网站建设策划书vi手册
  • 网站域名个人备案查询网站建设怎么链接表格
  • 广东品牌网站设计推广外包
  • 企业网站的优化医疗网站建设市场
  • 江苏徐州网站建设电商店铺
  • 网站建设推广新业务个人网站建设基本教程
  • 两学一做 知识竞赛网站selz网页设计公司
  • 做珠宝网站公司永久短网址生成
  • 企业网站后台管理系统模板江汉网站建设
  • 一个做炉石视频的网站分销系统开发多少钱
  • 开个网站做代理医院网站建设方案招标文件
  • 网站开发与规划就业前景网站建设+用ftp上传文件
  • 扫码员在哪个网站可以做泰安小程序开发制作
  • 网站开发简历 自我评价网站里图片做超链接
  • 珠海公司网站制作网站开发框架具体是什么