tim实践系列——消息撤回,阅后即焚 等功能如何开发

2024-03-15 22:30

本文主要是介绍tim实践系列——消息撤回,阅后即焚 等功能如何开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

消息撤回与阅后即焚是tim的两个核心接口,tim的数据传输核心接口有  消息接口,消息撤回,阅后即焚,流数据接口,另外几个核心接口在 《tim使用文档》 有详细说明
订阅
《tim实践系列文章》 随时查阅

常规消息接口也就是通常定义的聊天消息

注意:消息撤回接口必须由 消息发起方调用才有效,否则tim服务器返回权限错误。消息撤回可用于 用户到用户的消息撤回,也可以用于用户到群消息的撤回.

java客户端demo 程序示例:

tc.RevokeMessage(123L,"10001", null,  null, (short) 0, (short) 0);  //用户到用户的消息撤回
//撤销 消息id 为123 的消息,
//10001 为消息的接收方tc.RevokeMessage(123L,null, "100000001",  null, (short) 0, (short) 0);   //用户到群的消息撤回
//撤销 消息id 为123 的群消息
//100000001 为群账户

注意,阅后即焚接口必须由 消息接收方调用才有效,阅后即焚可用于 用户到用户的消息阅后即焚,群消息没有阅后即焚接口

tc.BurnMessage(123L, "10001",   null, (short) 0, (short) 0);
//对消息id 为123 的消息阅后即焚,
//10001 为消息的发起方


调用 消息撤回或消息阅后即焚接口后,tim服务器会返回TiimAck给调用者,并发送TimMssage给消息的相关账号,终端通过ackHanlder与messageHandler处理数据结果,如webtim中处理:

 ackHandler:......case STAT.TIMREVOKEMESSAGE:console.log("撤回消息返回", ta)if (ta.ok) {let tonode = ta.n;let t = ta.t;let mid = ta.ackInt;let cid = 0;if (t == 2) {cid = chatid(myAccount, tonode);let m = midMap.get(cid + "_" + mid);if (!isEmpty(m)) {m.isRevoke = true;}} else if (t == 3) {cid = chatid(tonode, tonode);let m = midMap.get(cid + "_" + mid);if (!isEmpty(m)) {m.isRevoke = true;}}if (document.getElementById("accountId").value == tonode) {showchat(cid)}}break;case STAT.TIMBURNMESSAGE:console.log("阅后即焚返回", ta)......

  messageHandler:......case 2: //撤回消息console.log("revokeMessage>>>", tm);let cid = 0;let node = "";if (tm.msType == 2) {node = tm.fromTid.nodecid = chatid(node, tm.toTid.node);} else if (tm.msType == 3) {node = tm.roomTid.node;cid = chatid(node, node);}let m = midMap.get(cid + "_" + tm.mid);if (!isEmpty(m)) {m.isRevoke = true;}if (document.getElementById("accountId").value == node) {showchat(cid)}break;.......

撤回消息与阅后即焚接口是没有时间限制的。在实际业务中,可以根据实际需要,加上撤回的时间限制。而阅后即焚,可以通过一般信息阅读时间,如8秒或10秒等,在消息显示后,调用阅后即焚接口。


有任何问题或建议请Email:donnie4w@gmail.com或 https://tlnet.top/contact  发信给我,谢谢!

这篇关于tim实践系列——消息撤回,阅后即焚 等功能如何开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/813453

相关文章

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

如何评价Ubuntu 24.04 LTS? Ubuntu 24.04 LTS新功能亮点和重要变化

《如何评价Ubuntu24.04LTS?Ubuntu24.04LTS新功能亮点和重要变化》Ubuntu24.04LTS即将发布,带来一系列提升用户体验的显著功能,本文深入探讨了该版本的亮... Ubuntu 24.04 LTS,代号 Noble NumBAT,正式发布下载!如果你在使用 Ubuntu 23.

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建

SpringBoot 自定义消息转换器使用详解

《SpringBoot自定义消息转换器使用详解》本文详细介绍了SpringBoot消息转换器的知识,并通过案例操作演示了如何进行自定义消息转换器的定制开发和使用,感兴趣的朋友一起看看吧... 目录一、前言二、SpringBoot 内容协商介绍2.1 什么是内容协商2.2 内容协商机制深入理解2.2.1 内容

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心