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

相关文章

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Spring Boot 整合 SSE的高级实践(Server-Sent Events)

《SpringBoot整合SSE的高级实践(Server-SentEvents)》SSE(Server-SentEvents)是一种基于HTTP协议的单向通信机制,允许服务器向浏览器持续发送实... 目录1、简述2、Spring Boot 中的SSE实现2.1 添加依赖2.2 实现后端接口2.3 配置超时时

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络