一、业务场景

有的时候 发送一条消息可能 发现自己发送错误了,但消息又不送出去了,就可以使用这个功能

二、主工功能代码实现

实现这个功能首先要有一个发送消息

发送消息有以下几个状态,上代码解释:

/*

V2TIM_MSG_STATUS_SENDING = 1, ///< 消息发送中

V2TIM_MSG_STATUS_SEND_SUCC = 2, ///< 消息发送成功

V2TIM_MSG_STATUS_SEND_FAIL = 3, ///< 消息发送失败

V2TIM_MSG_STATUS_HAS_DELETED = 4, ///< 消息被删除

V2TIM_MSG_STATUS_LOCAL_REVOKED = 6, ///< 被撤销的消息

*/

如果消息撤回 在拉取消息的时候 V2TIMMessage 这个类中的 属性 status会发生变化。把消息过虑显示就行了。

这简单介绍以下几个功能

发送消息方法调用

拉取历史消息调用

撤回消息调用

直接上代码:

以下代码可以测试 消息撤回功能,可以直接把代码复制在DEMO中,验证。

发送消息

V2TIMMessage *msg= [[V2TIMManager sharedInstance] createTextMessage:@"999"];

[[V2TIMManager sharedInstance]sendMessage:msg receiver:@"66" groupID:nil priority:V2TIM_PRIORITY_DEFAULT onlineUserOnly:NO offlinePushInfo:Nil progress:nil succ:^{

NSLog(@"消息文本发送成功");

} fail:^(int code, NSString *desc) {

NSLog(@"文本消息发送失败---->%@",desc);

}] ;

拉取服务器上的历史消息

V2TIMMessageListGetOption *getinfo = [[V2TIMMessageListGetOption alloc]init];

getinfo.getType = V2TIM_GET_CLOUD_OLDER_MSG;

getinfo.userID = @"66";

getinfo.count = 10;

getinfo.lastMsg = nil;

[[V2TIMManager sharedInstance]getHistoryMessageList:getinfo succ:^(NSArray *msgs) {

for (int i = 0; i < msgs.count; i++) {

if (i == 0) {

self.message = [msgs objectAtIndex:i];

}

V2TIMMessage *mg = [msgs objectAtIndex:i];

[self readData:mg];

}

} fail:^(int code, NSString *desc) {

NSLog(@"---%d---message-->%@",code,desc);

}];

-(void)readData:(V2TIMMessage *)msg

{

/*

V2TIM_MSG_STATUS_SENDING = 1, ///< 消息发送中

V2TIM_MSG_STATUS_SEND_SUCC = 2, ///< 消息发送成功

V2TIM_MSG_STATUS_SEND_FAIL = 3, ///< 消息发送失败

V2TIM_MSG_STATUS_HAS_DELETED = 4, ///< 消息被删除

V2TIM_MSG_STATUS_LOCAL_REVOKED = 6, ///< 被撤销的消息

*/

if (msg.elemType == V2TIM_ELEM_TYPE_NONE) {

NSLog(@"未知消息-->%@",msg.textElem.text);

}else if (msg.elemType == V2TIM_ELEM_TYPE_TEXT){

NSLog(@"文本消-->%@----state---%ld",msg.textElem.text,(long)msg.status);

//status 跟据这个状态 来判断是否撤回

}else if (msg.elemType == V2TIM_ELEM_TYPE_CUSTOM){

NSString * str =[[NSString alloc] initWithData:msg.customElem.data encoding:NSUTF8StringEncoding];

NSLog(@"自定义消息--->>%@",str);

}else if (msg.elemType == V2TIM_ELEM_TYPE_IMAGE){

NSLog(@"图片消息%@",msg.imageElem.imageList);

}else if (msg.elemType == V2TIM_ELEM_TYPE_VIDEO){

NSLog(@"视频消息--->>%@",msg.videoElem.videoPath);

}else if (msg.elemType == V2TIM_ELEM_TYPE_FILE){

NSLog(@"文件消息---->>%@",msg.fileElem.path);

}else if (msg.elemType == V2TIM_ELEM_TYPE_LOCATION){

NSLog(@"地理位置消息---->>%@",msg.locationElem.desc);

}else if (msg.elemType == V2TIM_ELEM_TYPE_FACE){

NSLog(@"表情消息---->>%d",msg.faceElem.index);

}else if (msg.elemType == V2TIM_ELEM_TYPE_GROUP_TIPS){

NSLog(@"msg----%@",msg.groupTipsElem.groupID);

}

}

注意事项

源代码

腾讯撤回的消息在服务器吗,腾讯云IM消息撤回相关推荐

  1. 斐讯路由器宽带运营商服务器,新版斐讯p.to路由器的设置教程

    新版斐讯p.to路由器配置简单,不过对于没有网络基础的用户来说,完成路由器的安装和配置上网参数,仍然有一定的困难,本文学习啦小编主要介绍斐讯p.to路由器的相关设置方法,希望对你有帮助! 新版斐讯p. ...

  2. win7 消息队列服务器,解决 :Win7安装MSMQ消息队列 出现异常,并非所有功能成功更改...

    解决 :Win7安装MSMQ消息队列 出现错误,并非所有功能成功更改. 在事件查看器中 错误状态为0x80070bc9 和 0x80070643 . (1)到安全模式下执行以下命令 cmd C:\WI ...

  3. qq撤回的信息腾讯服务器有吗,腾讯官方:撤回消息为何提示对方?丨QQ新增自定义撤回消息~...

    原标题:腾讯官方:撤回消息为何提示对方?丨QQ新增自定义撤回消息~ 网友"十大未解之谜"之一---撤回消息为什么还要提示对方?近日,腾讯官方终于给出了一个官方解释. 腾讯表示,在平 ...

  4. 从qq服务器删除误收邮件,QQ邮箱撤回时显示撤回失败,对方已读 收件箱里的消息却是对方已阅读或已删除 这种情况下邮件有没有被删除...

    QQ邮箱撤回时显示撤回失败,对方已读 收件箱里的消息却是对方已阅读或已删除 这种情况下邮件有没有被删除以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容 ...

  5. qq撤回消息还在服务器上面吗,QQ怎么查看对方撤回的消息?

    其实QQ查看的设置方法和微信是一致的,教授这里也简单讲一下. Step1: 同样进入QQ[设置]-[消息通知],开启[新消息通知],同时必须打开[通知显示消息内容]. Step 2: 这一步和上面微信 ...

  6. qq撤回消息 服务器,话题|QQ、微信消息的撤回为什么是两分钟?

    原标题:话题|QQ.微信消息的撤回为什么是两分钟? 转自意林 QQ.微信消息的撤回为什么是两分钟? 为了解决手残星人的烦恼,近两年内,QQ和微信在版本中上线了"撤回"的功能,对于发 ...

  7. 消息队列服务器 轻量,PHP的轻量消息队列php-resque使用说明

    消息队列处理后台任务带来的问题 项目中经常会有后台运行任务的需求,比如发送邮件时,因为要连接邮件服务器,往往需要5-10秒甚至更长时间,如果能先给用户一个成功的提示信息,然后在后台慢慢处理发送邮件的操 ...

  8. 深度数据对比分析:阿里云服务器和腾讯云服务器那家好?

    服务器具有维护成本低,安全稳定,高可扩展性和 7 X 24 小时的售后支持的优势,因此云服务器成为中小企业建站的首要选择.国内的云服务器竞争也进入了跑马圈地的时代,以阿里云.腾讯云.百度云三大BAT为 ...

  9. 枪火游侠服务器维修,腾讯《枪火游侠》宣布停服 补偿方案今日上线

    本文导航第1页:停运公告 第3页: 游戏评价 游戏评价 最近小编看到很多小伙伴都在讨论枪火游侠这款游戏,不过最近相信喜欢玩这款游戏的小伙伴一定知道了一个不太友好的消息,那就是腾讯宣布将永久关闭枪火游侠 ...

最新文章

  1. RFID技术助力提升衣物租借效率
  2. 使用Spring Data Redis操作Redis(集群版)
  3. ubuntu20.04安装讯飞输入法(失败经历)
  4. 工作空间出错_实践 | WMS系统,对于仓库工作效率和成本管控的意义
  5. Struts入门(三)深入Struts用法讲解
  6. 【搜索/推荐排序】NCF,DeepCross,Deep Crossing
  7. RFE筛选出的特征变量竟然是Boruta的4倍之多
  8. REST与RESTful
  9. 关于thymeleaf静态资源找不到的问题
  10. python封装数据库操作_Python3 数据库操作小封装
  11. c#获取网页源代码的5种方式
  12. mysql sharding 知乎_分库分表系列(1)-shardingsphere核心概念
  13. 模拟铁路12306售票系统的设计与实现
  14. 母亲节微信公众号走心文章就用来逗编辑器排版
  15. 还在用git commit -m 吗?Git 提交规范和自动产生changelog手摸手教程。
  16. 机器学习是门手艺,正如编程一样,马上会成为IT人员的必备技能!
  17. sandboxie游戏不能运行在虚拟环境中如何解决_Sandboxie:这款曾卖一百多的知名沙盘软件,现在免费开源了...
  18. WPF和Halcon编程第一步,导入图像到Halcon的WPF窗口控件出错?
  19. linux操作系统c语言编程,Linux操作系统下C语言编程从零开始
  20. 图像特征点、投影变换与图像拼接

热门文章

  1. 今天,我们为什么应该读懂华为人工智能?
  2. STM32CUBEMX(7)--移植雅特力AT32F403AVGT(兼容STM32F103VGT6),DAC输出电压
  3. Django连接MySQL数据库错误:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module
  4. N76E003 PWM之极性控制
  5. AJax 中的 xhr.states 和 xhr.status
  6. vue密码正则验证表单验证_如何在Vue中使用表单验证
  7. php printer_open 用法_使用printer_write()函数直接从PHP打印
  8. git cz: Missing script: “test“ To see a list of scripts, run: npm run
  9. 转行软件测试3年了,听前辈说测试前途是IT里最low的,我慌了......
  10. NAS系列 为什么你需要一台NAS