美文网首页
融云-补偿消息删除

融云-补偿消息删除

作者: 月沉眠love | 来源:发表于2021-09-07 14:37 被阅读0次
1、清除历史消息。在清除历史消息成功的回调中,删除会话,并且给该会话发一条不存储不计数的命令消息,作用是表示该会话历史消息已经被清除。
截屏2021-09-07 下午2.34.34.png

//代码示例:

// 清除历史消息

[[RCIMClient sharedRCIMClient] clearHistoryMessages:**self**.conversationType targetId:**self**.targetId recordTime:0 clearRemote:**YES** success:^{
    NSLog(@"++++ 清除历史消息成功");
    NSLog(@"++++ 删除会话");
    [[RCIMClient sharedRCIMClient] removeConversation:**self**.conversationType targetId:**self**.targetId];

    // 发送删除消息和会话命令,name和data您自己定义

    RCCommandMessage *message = [[RCCommandMessage alloc] init];

    message.name = @"删除";

    message.data = [NSString stringWithFormat:@"%ld", **self**.conversationType];

    **if** (**self**.conversationType == ConversationType_SYSTEM) {

        NSLog(@"++++ 系统会话,删除命令发单聊消息");

        [[RCIM sharedRCIM] sendMessage:ConversationType_PRIVATE targetId:**self**.targetId content:message pushContent:**nil** pushData:**nil** success:^(**long** messageId) {

            NSLog(@"++++ 删除命令发送成功");

        } error:^(RCErrorCode nErrorCode, **long** messageId) {

            NSLog(@"++++ 删除命令发送失败 %ld", nErrorCode);

        }];

    } **else** {

        [**self** sendMessage:message pushContent:**nil**];

    }

} error:^(RCErrorCode status) {
    NSLog(@"++++ 清除历史消息失败 %ld", status);
}];
2、(可选)该会话有新消息产生。
3、卸载重装应用
4、触发“消息补偿”机制,除了收到之前删除过的消息,还会收到删除的命令消息和删除后的新消息。
5、在消息接收监听中实现下面逻辑。
截屏2021-09-07 下午2.35.44.png 截屏2021-09-07 下午2.36.56.png

//代码示例:

  • (void)onRCIMReceiveMessage:(RCMessage )message left:(int*)left {

    if ([message.content isKindOfClass:[RCCommandMessage class]]) {

      RCCommandMessage *msg = (RCCommandMessage *)message.content;
    
      // 判断是否是自己发出的删除命令
    
      if  ([msg.name isEqualToString:@"删除"] && message.messageDirection == MessageDirection_SEND) {
    
          RCConversationType type = msg.data.integerValue;
    
          // 接收到我发送的删除命令
    
          // 获取该会话的最新一条消息
    
          NSArray *array = [[RCIMClient sharedRCIMClient] getHistoryMessages:type targetId:message.targetId oldestMessageId:-1 count:1];
    
          **if** (array.count > 0) {
    
              // 该会话有消息
    
              RCMessage *latestMsg = (RCMessage *)array[0];
    
              **if** (latestMsg.sentTime > message.sentTime) {
    
                  // 最新一条消息的sentTime 大于 删除命令的sentTime ,说明用户在清除历史消息后该会话又有新消息。
    
                  // 此时只删除 命令消息 之前的消息,不删除会话。
    
                  [[RCIMClient sharedRCIMClient] clearHistoryMessages:type targetId:message.targetId recordTime:message.sentTime clearRemote:**NO** success:^{
    
                      NSLog(@"++++ 收到删除命令后清除成功");
    
                  } error:^(RCErrorCode status) {
    
                      NSLog(@"++++ 收到删除命令后清除失败%ld", status);
    
                  }];
    
                  // 根据时间戳清除之前的未读数。
    
                  [[RCIMClient sharedRCIMClient] clearMessagesUnreadStatus:type targetId:message.targetId time:message.sentTime]; 
    
              } **else** {
    
                  // 该用户清除历史消息后没有新消息
    
                  // 删除命令消息之前的消息,并且删除该会话
    
                  [[RCIMClient sharedRCIMClient] clearHistoryMessages:type targetId:message.targetId recordTime:message.sentTime clearRemote:**NO** success:^{
    
                      NSLog(@"++++ 收到删除命令后清除成功");
    
                  } error:^(RCErrorCode status) {
    
                      NSLog(@"++++ 收到删除命令后清除失败%ld", status);
    
                  }];
    
                  [[RCIMClient sharedRCIMClient] removeConversation:type targetId:message.targetId];
    
                  }
    
          } **else** {
    
              // 无消息、无会话,不需要操作
          }
      }
    

    }
    }

2021年5月27日 16:05版本

相关文章

  • 融云-补偿消息删除

    1、清除历史消息。在清除历史消息成功的回调中,删除会话,并且给该会话发一条不存储不计数的命令消息,作用是表示该会话...

  • 海量消息的直播互动系统---融云

    海量消息的直播互动系统---融云 融云是做即时性消息通宵的一个平台,由于这个产品和我们目前正在开发的pushser...

  • 【指南】广播推送开发

    一、概述 依托融云在即时通讯领域深厚的技术积累及多年稳定可靠的消息推送服务能力,融云决定推出广播推送产品。融云广播...

  • 融云-添加好友流程。

    融云是干嘛的? 融云就是提供了一个稳定的消息通道,这是他的根本作用。 另外融云提供了一些 UI 组件,目的是让用户...

  • emobile的消息配置(私有云)

    emobile消息服务和emessage一样,分为公有云和私有云。公有云是指使用北京融云公司提供的消息引擎,私有云...

  • iOS开发如何测试生产环境的远程推送功能

    极光推送&融云消息推送 首先说一下我们项目用的是极光推送,还有一个集成融云即时通讯自带的融云推送。 在Debug模...

  • 【干货】如何了解融云的 SDK 产品架构和消息体系

    此文将详细介绍融云的 SDK 产品架构和消息体系,以便于开发者更深入的了解融云并更快速的开发自己的产品。 融云 S...

  • 融云 SDK 如何实现群组操作

    融云 SDK 如何实现群组操作 背景 在集成融云 SDK 后,需要实现群组操作的消息通知。包括: 群创建、销毁通知...

  • 融云IM iOS sdk 集成流程与心得

    融云IM简介 融云的定位是只专注即时通讯的消息发送功能,融云服务器不会维护用户的好友关系及群组关系,这就需要集成的...

  • ios开发集成融云SDK心得

    融云IM简介 融云的定位是只专注即时通讯的消息发送功能,融云服务器不会维护用户的好友关系及群组关系,这就需要集成的...

网友评论

      本文标题:融云-补偿消息删除

      本文链接:https://www.haomeiwen.com/subject/zffpwltx.html