消息撤回

更新时间: 2023/12/12 03:23:46

本文主要介绍如何通过 NERoom SDK 在聊天室中撤回消息。

功能描述

聊天室消息撤回实际为双向撤回,即撤回消息之后,消息接收者和发送者都将收到一条消息撤回通知,并删除对应的消息。

撤回消息后,会触发聊天室通知消息,包括被撤回的消息 ID,操作者 ID 等信息,您可以根据需要自行处理该信息。

用户只有在聊天室中发送消息成功,才能撤回该消息。未发送成功的消息不支持撤回。

前提条件

在聊天室中发送消息成功。

实现步骤

  1. 调用 getRoomContext 接口,获取房间上下文。

    调用此方法时,您需要将 roomUid 设置为您所加入房间的 ID。

    func getRoomContext(roomUuid: String) -> NERoomContext?
    
  2. 调用 recallChatroomMessage 方法实现消息撤回。

    func recallChatroomMessage(messageId: String,
                               messageTime: TimeInterval,                              
                               callback: NECallback<AnyObject>?)
    
    名称 类型 描述
    messageId String 需要撤回的聊天室消息 ID。
    messageTime TimeInterval 被撤回消息的时间戳。
    callback NECallback? 撤回聊天室信息的回调。
  3. 触发消息撤回事件的通知([NERoomChatNotificationMessage](https://doc.yunxin.163.com/neroom/api-docs/neroom_iOS_zh/NERoom_iOS_API_Reference/classes/NERoomChatNotificationMessage)。

    该通知的类型(NERoomChatEventType)为 recall,表示聊天室消息撤回。并通过其 recalledMessageId 方法获取被撤回消息的 ID。

示例代码

实现消息撤回的示例代码如下:

    let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")

    guard let roomContext = roomContext else {
        return
    }
    /// 添加代理
    roomContext.addRoomListener(self)
    roomContext.chatController.recallChatroomMessage(messageId: "被撤回的聊天室消息id", messageTime: 被撤回的聊天室消息时间戳) { code, msg, _ in
        if code == 0 {
            print("撤回消息成功")
        } else {
            print("撤回消息失败")
        }
    }

消息回调示例代码如下:

    func onReceiveChatroomMessages(messages: [NERoomChatMessage]) {
        for msg in messages {
            if msg.messageType == .notification, 
            let m = msg as? NERoomChatNotificationMessage {
                print("逻辑处理")
            }
        }
    }
此文档是否对你有帮助?
有帮助
去反馈
  • 功能描述
  • 前提条件
  • 实现步骤
  • 示例代码