九、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信IM,支持各类消息收发,音视频通话,附vue源码-聊天会话管理的实现
聊天会话管理的实现
1.加载会话列表
在插件底层已经做好了会话缓存的处理,我们只需要根据腾讯提供的api加载即可,具体的定义如下:
文章图片
具体调用的代码如下,这里我们需要注意nextSeq这个参数,是由插件提供反馈的,因此我们每次执行getConversationList之后需要在callback中记录最新的nextSeq
export default {
data () {
return {
nextSeq: 0,
conversationList: []
}
},
mounted() {
let{ data } = await this.$txim.getConversationList(this.nextSeq, 999)
// 这里需要更新一下nextSeq
this.nextSeq = data.nextSeq
data.conversationList = data.conversationList || data.conversations
let conversationList = data.conversationList.sort((a,b) => b.lastMessage.timestamp - a.lastMessage.timestamp)
this.conversationList = conversationList
}
}
2. 删除会话项目
删除某一条会话项目我们使用的api是deleteConversation,deleteConversation为删除会话记录api。请注意,删除会话的同时会导致本地储存的聊天记录一同删除,请谨慎使用。
this.$txim.deleteConversation(conversationID)
// 这里删除之后并不会有事件通知我们你删除了这条会话
// 因此我们需要自己删除会话列表中的元素,触发界面刷新
this.conversationList.splice(index, 1)
3.设置会话草稿
在微信中有一种特别的情况就是会话草稿,大致的情况如下图所示
文章图片
在这里我们主要使用的是setConversationDraft方法,这里仅仅是针对会话项目的标记而已,标记他的草稿,没有实际的作用,仅仅是本地显示使用。
const conversation = uni.requireNativePlugin("TXIM-Conversation");
let conversationID = '129308-4291-94810-428190-1238921'
let draftText = '草稿'
conversation.setConversationDraft(conversationID, draftText, res => {
// res = { type, data, code }
console.log(res)
})
项目开源地址及交流群 【九、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信IM,支持各类消息收发,音视频通话,附vue源码-聊天会话管理的实现】项目成品效果查看:请点击项目引言
项目开源地址:https://gitee.com/ckong/Zhimi...
Uniapp开发交流群:755910061
推荐阅读
- 一个人的碎碎念
- 野营记-第五章|野营记-第五章 讨伐梦魇兽
- Shell-Bash变量与运算符
- 清明,是追思、是传承、是感恩。
- 牛人进化+|牛人进化+ 按自己的意愿过一生
- 七老修复好敏感、角质层薄、红血丝
- 华为旁!大社区、地铁新盘,佳兆业城市广场五期!
- 小影写在2018九月开学季
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 螃蟹和这些食物同吃,轻则腹泻、重则中毒!要小心哦~