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

融云-补偿消息删除

作者: 月沉眠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版本

    相关文章

      网友评论

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

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